首頁 運維 Nginx Nginx初始化配置的方法

Nginx初始化配置的方法

May 19, 2023 pm 03:22 PM
nginx

基本概念

nginx 最常的用途是提供反向代理服務,那麼什麼反向代理呢?正向代理相信許多大陸同胞都在這片神奇的土地上用過了,原理大致如下圖:

Nginx初始化配置的方法

代理伺服器作為客戶端這邊的中介接受請求,隱藏掉真實的客戶,向伺服器取得資源。如果代理伺服器在長城外的話還能順便幫助我們實現翻越長城的目的。而反向代理顧名思義就是反過來代理伺服器作為伺服器的中介,隱藏掉真實提供服務的伺服器,原理大致如下圖:

Nginx初始化配置的方法 

這麼做當然不是為了實現翻越長城,而是為了實現安全和負載平衡等一系列的功能。所謂安全指客戶端的請求不會直接落到內網的伺服器上而是透過代理做了一層轉發,在這一層就可以實現安全過濾,流控,防 ddos​​ 等一系列策略。而負載平衡指我們可以水平擴展後端真正提供服務的伺服器數量,代理依照規則轉發請求到各個伺服器,使得各個伺服器的負載接近平衡。

而 nginx 就是目前流行的這樣一個反向代理服務。

在ubuntu 下,可以捨去編譯安裝的過程,直接apt-get

複製程式碼 程式碼如下:

sudo apt-get install nginx

安裝好之後可以直接透過:

複製程式碼 程式碼如下:

sudo service nginx start

來啟動nginx 服務,nginx 預設設定了80 連接埠的轉發,我們可以再瀏覽器造訪http://locallhost 進行檢查。

初始設定

nginx 的預設設定檔位於

複製程式碼 程式碼如下:

/etc/nginx /nginx.conf

學習配置最好的方式,就是從例子入手,我們先不看其他的配置,直接看和nginx 預設頁相關的配置。在設定檔中有一行:

複製程式碼 程式碼如下:

include /etc/nginx/sites-enabled/*;

這一行載入了一個外部的設定文件,sites-enabled 資料夾下只有一個default 文件,這個外部的設定檔就是負責我們nginx 的預設代理。將設定好的內容縮水後,得到以下幾行:

複製程式碼 程式碼如下:


server {
    server_name localhost;
    listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

##   lo  lo #    try_files $uri $uri/ =404;
    }
}

一個大型的網站通常會有許多下屬的站點,有各自的伺服器提供對應的服務,在nginx中我們可以透過一個叫虛擬主機的概念來將這些不同的服務配置隔離,這就是上面配置中的server 的意思。舉例來說google 旗下有翻譯和學術兩款產品我們就可以在nginx 的設定檔中設定兩個server,servername 分別為translate.google.com 和scholar.google.com,這樣的話不同的url請求就會對應到nginx對應的設置,轉送到不同的後端伺服器。這裡的 servername 是和客戶端 http 請求中的 host 行進行比對的。

本例中 server_name 為 localhost,這就是為什麼我們可以在瀏覽器透過 localhost 存取到頁面的設定。下面兩個 listen 分別對應了 ipv4 和 ipv6 下的監聽埠如果設為 8080,那麼我們就只能透過 localhost:8080 來存取到預設頁面了。

default_server 的意思是指如果有其他 http 要求的 host 在 nginx 中不存在設定的話那麼就用這個 server 的設定來處理。例如我們去訪問 127.0.0.1 那麼也會落到這個 server 來處理。

每個 url 請求都會對應的一個服務,nginx 進行處理轉送或是本地的一個檔案路徑,或是其他伺服器的一個服務路徑。而這個路徑的配對是透過 location 來進行的。我們可以將 server 當做對應一個網域的配置,而 location 是在一個網域下對更精細的路徑進行配置。

在這裡location 匹配/ 開始的所有請求,即localhost 下的/xxx 或/yyy 都要走下面的配置,除了這種簡單粗暴的匹配,nginx 也支持正則和完全相等及其他的精細匹配方式。而tryfiles意思是 nginx會按照接下來的順序去存取文件,將第一個匹配的返回。例如你去要求 localhost/test,他會去找 /test 文件,找不到再去找 /test/ 再找不到就回傳一個 404。此外我們還可以在location的配置裡用proxypass 實現反向代理和負載平衡,不過這個最簡單的配置並沒有涉及

其中root 是指將本地的一個資料夾作為所有url 請求的根路徑。例如使用者請求了一個 localhost/test,那麼 nginx 就會去需找 /usr/share/nginx/html 資料夾下的 test 檔案回傳。

而 index 是預設的存取頁面了,當我們造訪 localhost 時,他會自動依序尋找 root 檔案路徑下的 index.html 和 index.htm 將第一個找到的結果回傳。

location 進階配置
上面的配置只是將使用者的url 映射到本地的文件,並沒有實現傳說中的反向代理和負載平衡(當然nginx 做靜態文件的分發也是想到的厲害),下面我們就來進一步配置location 看看怎麼實現。

配置很簡單例如我要將所有的請求到轉移到真正提供服務的一台機器的8080 端口,只要這樣:

複製代碼 代碼如下:

location / {
    proxy_pass 123.34.56.67:8080;
}

這樣所有的請求就都被反向代理到123.34.56.67 去了。這樣我們反向代理的功能是實現了,可是就能代理到一台伺服器上哪有什麼負載平衡呀?這就要用到 nginx 的 upstream 模組了。

複製碼 程式碼如下:


upstream backend {
    ip_hash;   
    server backend1.example.com ;
    server backend3.example.com;
    server backend4.example.com;
}
location / {
    proxy_pass http://backend;
}

我們在upstream 中指定了一組機器,並將這個群組命名為backend,這樣在proxypass 中只要將請求轉移到backend 這個upstream 中我們就實現了在四台機器的反向代理加負載平衡。其中的 iphash指明了我們均衡的方式是按照使用者的 ip 位址進行分配。

要讓設定生效,我們不必重新啟動 nginx 只需要 reload 設定即可。


複製程式碼 程式碼如下:

sudo service nginx reload


以上是Nginx初始化配置的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

nginx怎麼配置雲服務器域名 nginx怎麼配置雲服務器域名 Apr 14, 2025 pm 12:18 PM

在雲服務器上配置 Nginx 域名的方法:創建 A 記錄,指向雲服務器的公共 IP 地址。在 Nginx 配置文件中添加虛擬主機塊,指定偵聽端口、域名和網站根目錄。重啟 Nginx 以應用更改。訪問域名測試配置。其他注意事項:安裝 SSL 證書啟用 HTTPS、確保防火牆允許 80 端口流量、等待 DNS 解析生效。

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

nginx怎麼查版本 nginx怎麼查版本 Apr 14, 2025 am 11:57 AM

可以查詢 Nginx 版本的方法有:使用 nginx -v 命令;查看 nginx.conf 文件中的 version 指令;打開 Nginx 錯誤頁,查看頁面的標題。

怎麼啟動nginx服務器 怎麼啟動nginx服務器 Apr 14, 2025 pm 12:27 PM

啟動 Nginx 服務器需要按照不同操作系統採取不同的步驟:Linux/Unix 系統:安裝 Nginx 軟件包(例如使用 apt-get 或 yum)。使用 systemctl 啟動 Nginx 服務(例如 sudo systemctl start nginx)。 Windows 系統:下載並安裝 Windows 二進製文件。使用 nginx.exe 可執行文件啟動 Nginx(例如 nginx.exe -c conf\nginx.conf)。無論使用哪種操作系統,您都可以通過訪問服務器 IP

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

See all articles