如何在 CentOS 7 上安裝和配置 Nginx?


Nginx 是一款流行的 Web 伺服器,以其高效能、可擴充套件性和低資源消耗而聞名。它通常用作反向代理、負載均衡器和 HTTP 快取。本文將討論如何在 CentOS 7 上安裝和配置 Nginx。

步驟 1:更新系統

在開始安裝任何軟體包之前,務必將系統更新到最新版本。為此,請執行以下命令:

sudo yum update

步驟 2:安裝 Nginx

系統更新完成後,我們可以繼續安裝 Nginx。我們可以使用以下命令安裝 Nginx:

sudo yum install nginx

安裝過程將開始,系統會提示您鍵入“y”並按 Enter 確認安裝。

步驟 3:啟動 Nginx 並將其設定為開機啟動

安裝完成後,我們可以透過執行以下命令啟動 Nginx 服務:

sudo systemctl start nginx

要使 Nginx 在啟動時自動啟動,請執行以下命令:

sudo systemctl enable nginx

步驟 4:配置防火牆以允許 Nginx 流量

預設情況下,CentOS 7 啟用防火牆。我們需要允許 HTTP 流量透過防火牆才能訪問 Web 伺服器。我們可以使用以下命令允許 HTTP 流量:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

步驟 5:測試 Nginx 安裝

現在我們已經安裝並配置了 Nginx,可以透過在 Web 瀏覽器中訪問 Web 伺服器的 IP 地址來測試它。在 Web 瀏覽器中,輸入以下內容:

http://your_server_ip_address/

如果一切配置正確,您應該會看到預設的 Nginx 頁面。

步驟 6:配置 Nginx

預設的 Nginx 配置檔案位於 /etc/nginx/nginx.conf。在對配置檔案進行任何更改之前,我們需要透過執行以下命令對其進行備份:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

現在我們已經備份了配置檔案,可以使用我們選擇的文字編輯器編輯原始檔案。在本例中,我們將使用 nano 文字編輯器:

sudo nano /etc/nginx/nginx.conf

主要的 Nginx 配置檔案分為幾個塊,包括 http、server 和 location 塊。http 塊是主要的配置塊,包含 Web 伺服器的全域性設定。

對配置檔案進行任何更改後,必須使用以下命令測試配置檔案是否存在語法錯誤:

sudo nginx -t

如果沒有語法錯誤,可以使用以下命令重新載入 Nginx 配置:

sudo systemctl reload nginx

步驟 7:配置虛擬主機

Nginx 允許我們配置虛擬主機,用於在同一伺服器上提供不同的網站或應用程式。要建立虛擬主機,我們需要在 Nginx 配置檔案中建立一個新的伺服器塊。

首先,我們需要為我們的虛擬主機建立一個新的配置檔案:

sudo nano /etc/nginx/conf.d/example.com.conf

在此檔案中,我們可以為我們的虛擬主機新增伺服器塊,其中將包含我們網站的配置設定。例如:

server {
   listen 80;
   server_name example.com;
   root /var/www/example.com;
   index index.html;

   location / {
      try_files $uri $uri/ /index.html;
   }
}

在本例中,我們正在為域名 example.com 的網站配置虛擬主機。root 指令指定網站的文件根目錄,index 指令指定要提供的預設索引檔案。

location 塊指定與特定 URL 或 URL 模式匹配的請求的配置設定。在本例中,我們使用 try_files 指令嘗試提供請求的檔案或目錄,如果不存在,則提供 index.html 檔案。

新增虛擬主機的配置後,我們需要測試配置檔案是否存在語法錯誤:

sudo nginx -t

如果沒有語法錯誤,我們可以重新載入 Nginx 配置以應用更改:

sudo systemctl reload nginx

步驟 8:使用 SSL/TLS 證書啟用 HTTPS

要使用 HTTPS 保護我們的網站,我們需要從受信任的證書頒發機構 (CA) 獲取 SSL/TLS 證書。我們可以使用 Certbot 工具從 Let's Encrypt 獲取免費的 SSL/TLS 證書。

首先,我們需要安裝 Certbot 工具:

sudo yum install certbot python2-certbot-nginx

接下來,我們可以執行以下命令以獲取並安裝我們虛擬主機的 SSL/TLS 證書:

sudo certbot --nginx -d example.com

此命令將自動從 Let's Encrypt 獲取證書,並配置 Nginx 以將其用於我們的虛擬主機。

獲取證書後,我們需要配置 Nginx 將所有 HTTP 流量重定向到 HTTPS。我們可以透過將以下伺服器塊新增到虛擬主機配置中來實現:

server {
   listen 80;
   server_name example.com;
   return 301 https://$server_name$request_uri;
}

此伺服器塊將使用 301 重定向將所有 HTTP 流量重定向到 HTTPS。

步驟 9:啟用 Nginx 將請求代理到應用程式伺服器

Nginx 通常用作反向代理伺服器,以將流量分配到多個應用程式伺服器。這可以提高 Web 應用程式的效能和可擴充套件性。

要啟用 Nginx 將請求代理到應用程式伺服器,我們需要在 Nginx 配置檔案中建立一個新的伺服器塊,該塊定義上游伺服器。

upstream app_servers {
   server 10.0.0.1:8000;
   server 10.0.0.2:8000;
}

在本例中,我們正在定義一個名為 app_servers 的上游組,其中包含兩個應用程式伺服器,IP 地址分別為 10.0.0.1 和 10.0.0.2,偵聽埠 8000。

接下來,我們可以將一個新的伺服器塊新增到我們的 Nginx 配置檔案中,該塊將請求代理到上游伺服器:

server {
   listen 80;
   server_name example.com;

   location / {
      proxy_pass http://app_servers;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 60s;
      proxy_send_timeout 60s;
      proxy_read_timeout 60s;
   }
}

在本例中,我們正在配置 Nginx 將請求代理到 app_servers 組中定義的上游伺服器。proxy_pass 指令指定要將請求轉發到的 URL,proxy_set_header 指令將其他標頭新增到轉發的請求中。

步驟 10:使用 Systemd 監控 Nginx

Systemd 是 Linux 的系統和服務管理器,它提供了一系列用於管理服務的工具,包括 Nginx。我們可以使用 systemd 監控 Nginx 服務並檢視其狀態和日誌。

要檢視 Nginx 服務的狀態,請執行以下命令:

sudo systemctl status nginx

此命令將顯示 Nginx 服務的當前狀態,包括它是否正在執行、任何錯誤或警告以及自上次啟動或重新啟動以來的時間。

要檢視 Nginx 服務的日誌,請執行以下命令:

sudo journalctl -u nginx

此命令將顯示 Nginx 服務的日誌,包括任何錯誤、警告或資訊訊息。

我們還可以使用以下命令即時跟蹤 Nginx 日誌:

sudo journalctl -u nginx -f

此命令將在生成時即時顯示 Nginx 日誌,使我們能夠更密切地監控服務。

步驟 11:將 Nginx 配置為負載均衡器

Nginx 最常見的用途之一是作為負載均衡器。在此配置中,Nginx 將傳入請求分配到多個後端伺服器,為 Web 應用程式提供高可用性和可擴充套件性。

要將 Nginx 配置為負載均衡器,我們需要建立一個包含後端伺服器的 IP 地址或主機名的上游組:

upstream backend_servers {
   server 10.0.0.1:8000;
   server 10.0.0.2:8000;
}

在本例中,我們正在定義一個名為 backend_servers 的上游組,其中包含兩個後端伺服器,IP 地址分別為 10.0.0.1 和 10.0.0.2,偵聽埠 8000。

接下來,我們可以將一個新的伺服器塊新增到我們的 Nginx 配置檔案中,該塊定義負載均衡配置:

server {
   listen 80;
   server_name example.com;

   location / {
      proxy_pass http://backend_servers;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 60s;
      proxy_send_timeout 60s;
      proxy_read_timeout 60s;

      # Load balancing configuration
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_redirect off;
      proxy_buffering off;
      proxy_http_version 1.1;

      # Load balancing algorithm
      # Options: round-robin, least_conn, ip_hash
      # Default: round-robin
      proxy_set_header X-Nginx-Upstream-LB-Method least_conn;
   }
}

在本例中,我們使用 proxy_pass 指令將請求轉發到 backend_servers 組中定義的後端伺服器。我們還使用 proxy_set_header 指令將其他標頭新增到轉發的請求中。

結論

Nginx 是一款優秀的 Web 伺服器,提供高效能、可擴充套件性和低資源消耗。在本文中,我們討論瞭如何在 CentOS 7 上安裝和配置 Nginx。透過上述步驟,您應該能夠設定基本的 Nginx Web 伺服器並開始提供網頁服務。

更新於: 2023 年 5 月 12 日

8K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告