如何在 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 伺服器並開始提供網頁服務。