搜尋
首頁運維NginxNginx初始化配置的方法

基本概念

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刪除
NGINX單元:關鍵功能NGINX單元:關鍵功能Apr 25, 2025 am 12:17 AM

NGINXUnit是一個開源應用服務器,支持多種編程語言,提供動態配置、零停機更新和內置負載均衡等功能。 1.動態配置:無需重啟即可修改配置。 2.多語言支持:兼容Python、Go、Java、PHP等。 3.零停機更新:支持不中斷服務的應用更新。 4.內置負載均衡:可將請求分發到多個應用實例。

NGINX單元與其他應用程序服務器NGINX單元與其他應用程序服務器Apr 24, 2025 am 12:14 AM

NGINXUnit優於ApacheTomcat、Gunicorn和Node.js內置HTTP服務器,適用於多語言項目和動態配置需求。 1)支持多種編程語言,2)提供動態配置重載,3)內置負載均衡功能,適合需要高擴展性和可靠性的項目。

NGINX單元:架構及其工作原理NGINX單元:架構及其工作原理Apr 23, 2025 am 12:18 AM

NGINXUnit通過其模塊化架構和動態重配置功能提高了應用的性能和可管理性。 1)模塊化設計包括主控進程、路由器和應用進程,支持高效管理和擴展。 2)動態重配置允許在運行時無縫更新配置,適用於CI/CD環境。 3)多語言支持通過動態加載語言運行時實現,提升了開發靈活性。 4)高性能通過事件驅動模型和異步I/O實現,即使在高並發下也保持高效。 5)安全性通過隔離應用進程提高,減少應用間相互影響。

使用NGINX單元:部署和管理應用程序使用NGINX單元:部署和管理應用程序Apr 22, 2025 am 12:06 AM

NGINXUnit可用於部署和管理多種語言的應用。 1)安裝NGINXUnit。 2)配置它以運行不同類型的應用,如Python和PHP。 3)利用其動態配置功能進行應用管理。通過這些步驟,你可以高效地部署和管理應用,提升項目效率。

NGINX與Apache:Web服務器的比較分析NGINX與Apache:Web服務器的比較分析Apr 21, 2025 am 12:08 AM

NGINX更适合处理高并发连接,而Apache更适合需要复杂配置和模块扩展的场景。1.NGINX以高性能和低资源消耗著称,适合高并发。2.Apache以稳定性和丰富的模块扩展闻名,适合复杂配置需求。

NGINX單元的優勢:靈活性和性能NGINX單元的優勢:靈活性和性能Apr 20, 2025 am 12:07 AM

NGINXUnit通過其動態配置和高性能架構提升應用的靈活性和性能。 1.動態配置允許在不重啟服務器的情況下調整應用配置。 2.高性能體現在事件驅動和非阻塞架構以及多進程模型上,能夠高效處理並發連接和利用多核CPU。

NGINX與Apache:性能,可伸縮性和效率NGINX與Apache:性能,可伸縮性和效率Apr 19, 2025 am 12:05 AM

NGINX和Apache都是強大的Web服務器,各自在性能、可擴展性和效率上有獨特的優勢和不足。 1)NGINX在處理靜態內容和反向代理時表現出色,適合高並發場景。 2)Apache在處理動態內容時表現更好,適合需要豐富模塊支持的項目。選擇服務器應根據項目需求和場景來決定。

終極攤牌:nginx vs. apache終極攤牌:nginx vs. apacheApr 18, 2025 am 12:02 AM

NGINX適合處理高並發請求,Apache適合需要復雜配置和功能擴展的場景。 1.NGINX採用事件驅動、非阻塞架構,適用於高並發環境。 2.Apache採用進程或線程模型,提供豐富的模塊生態系統,適合複雜配置需求。

See all articles

熱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

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

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境