介紹
Nginx是全球最受歡迎的網頁伺服器之一,負責托管一些最大和最高流量的網站。它是一個輕量級的選擇,可以用作網頁伺服器或反向代理。
在本指南中,您將瞭解如何在Rocky Linux 9伺服器上安裝Nginx,調整防火牆,管理Nginx進程,並設置伺服器塊以從單個伺服器托管多個域名。
先決條件
在開始本指南之前,您應該在伺服器上配置一個具有sudo特權的常規非root用戶。您可以按照我們的Rocky Linux 9初始伺服器設置指南來瞭解如何配置常規用戶帳戶。
在完成本教程的最後幾個步驟之前,您也可以選擇註冊一個域名。有關在DigitalOcean上設置域名的更多信息,請參閱我們的介紹DigitalOcean DNS。
當您有一個可用的帳戶時,以非root用戶身份登錄開始。
步驟1 – 安裝 Nginx
由於 Nginx 可在 Rocky 的預設存儲庫中找到,您可以使用 dnf
套件管理器單個命令來安裝它。
使用 dnf install
安裝 nginx
套件:
- sudo dnf install nginx
在提示時,輸入 y
確認要安裝 nginx
。之後,dnf
將在您的伺服器上安裝 Nginx 及其所有所需的相依套件。
安裝完成後,運行以下命令以啟用並啟動網頁伺服器:
- sudo systemctl enable nginx
- sudo systemctl start nginx
這將使 Nginx 在您的伺服器重新啟動時自動重啟。您的新網頁伺服器現在應該已經啟動運行,但在測試之前,您可能需要對防火牆配置進行更改。
步驟2 – 調整防火牆
如果您在 Rocky Linux 9 的初始伺服器設置指南中啟用了 firewalld
防火牆,則需要調整防火牆設置以允許在預設端口 80
上運行的 Nginx 網頁伺服器的外部連線。
執行以下命令以永久啟用端口80
上的HTTP連接:
- sudo firewall-cmd --permanent --add-service=http
要驗證http
防火牆服務是否已正確添加,您可以運行:
- sudo firewall-cmd --permanent --list-all
您將看到如下輸出:
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
要應用更改,您需要重新加載防火牆服務:
- sudo firewall-cmd --reload
您的網絡服務器現在應該可以被外部訪問者訪問。
步驟3 – 檢查您的網絡服務器
此時,您的網絡服務器應該已經運行。
您可以使用systemctl status
命令來確保服務正在運行:
- systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
通過此輸出確認,服務已成功啟動。但是,測試的最佳方式是實際從Nginx請求頁面。
您可以訪問默認的Nginx首頁以確認軟件是否正常運行,方法是轉到您服務器的IP地址。如果您不知道您的服務器IP地址,您可以使用icanhazip.com工具找到它,該工具將為您提供來自互聯網上另一個位置接收到的公共IP地址:
- curl -4 icanhazip.com
當您有了您的服務器IP地址後,請將其輸入到您的瀏覽器地址欄中:
http://your_server_ip
您應該收到默認的Nginx首頁:
如果您在這個頁面上,則您的服務器運行正常,並且準備好被管理。
第 4 步 – 管理 Nginx 進程
現在您的 Web 伺服器已經運行起來了,讓我們來查看一些服務管理命令。
要停止您的 Web 伺服器,請使用 systemctl stop
:
- sudo systemctl stop nginx
在停止狀態下啟動 Web 伺服器,請使用 systemctl start
:
- sudo systemctl start nginx
要停止然後重新啟動服務,請使用 systemctl restart
:
- sudo systemctl restart nginx
如果您只是進行配置更改,Nginx 通常可以在不中斷連接的情況下重新加載。要做到這一點,請使用 systemctl reload
:
- sudo systemctl reload nginx
在本教程的前面部分,您已經配置了 Nginx 在伺服器啟動時自動啟動。您可以使用 systemctl disable
來禁用此行為:
- sudo systemctl disable nginx
要重新啟用服務以在啟動時啟動,您可以輸入:
- sudo systemctl enable nginx
第 5 步 – 熟悉重要的 Nginx 檔案和目錄
現在您已經知道如何管理 Nginx 服務,您應該花幾分鐘時間熟悉一些重要的目錄和檔案。
內容
/usr/share/nginx/html
: 實際的網頁內容,預設情況下僅包含您之前看到的預設 Nginx 頁面,是從/usr/share/nginx/html
目錄提供的。這可以通過修改 Nginx 配置文件來更改。
伺服器配置
/etc/nginx
: Nginx 配置目錄。所有的 Nginx 配置文件都在這裡。/etc/nginx/nginx.conf
: 主要的 Nginx 配置文件。這可以修改以對 Nginx 全局配置進行更改。/etc/nginx/conf.d/
: 這個目錄包含了伺服器區塊配置文件,您可以在其中定義在 Nginx 中托管的網站。一個典型的方法是將每個網站放在一個以網站域名命名的單獨文件中,例如your_domain.conf
。
伺服器日誌
/var/log/nginx/access.log
: 每個對您的網絡服務器的請求都會在這個日誌文件中記錄,除非 Nginx 配置了其他方式。- `/var/log/nginx/error.log`: 任何 Nginx 錯誤都會記錄在此日誌中。
您現在應該已經準備好配置該站點以托管一個或多個域名。
步驟 6 – 設置服務器塊(可選)
使用 Nginx Web 服務器時,服務器塊(類似於 Apache 中的虛擬主機)可用於組織配置細節並從單個服務器上托管多個域。在 Rocky Linux 9 上,服務器塊定義在位於 /etc/nginx/conf.d
的 .conf
文件中。我們將設置一個名為 your_domain
的域,但您應該將其替換為您自己的域名。
默認情況下,Rocky Linux 9 上的 Nginx 配置為從 /usr/share/nginx/html
目錄中提供文檔。雖然這對於單個站點很有效,但如果您要托管多個站點,則可能變得難以管理。您將在 /var/www
中為 your_domain 網站創建目錄結構,將 /usr/share/nginx/html
留在原位作為在客戶端請求不匹配任何其他站點時提供的默認目錄。
按以下方式創建 your_domain 的目錄,使用 -p
標誌創建任何必要的父目錄:
- sudo mkdir -p /var/www/your_domain/html
接下來,使用$USER
環境變量分配目錄的所有權,該變量應該引用您當前的系統用戶:
- sudo chown -R $USER:$USER /var/www/your_domain/html
現在,您將創建一個示例index.html
頁面來測試服務器塊配置。Rocky Linux 9附帶的默認文本編輯器是vi
。vi
是一個非常強大的文本編輯器,但對於缺乏經驗的用戶來說可能有些晦澀。您可能想要安裝一個更加用戶友好的編輯器,比如nano
,以便在Rocky Linux 9服務器上編輯配置文件:
- sudo dnf install nano
接下來,使用nano
或您喜歡的編輯器創建一個示例index.html
頁面:
- nano /var/www/your_domain/html/index.html
在其中,添加以下示例HTML:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
完成後保存並關閉文件。如果您使用nano
,可以通過按CTRL + X
保存並退出,然後在提示時按Y
,然後按Enter:
為了讓Nginx提供此內容,您需要創建一個服務器塊,其中包含指向您自定義網站根目錄的指令。在/etc/nginx/conf.d/your_domain.conf
中創建一個新的服務器塊:
- sudo nano /etc/nginx/conf.d/your_domain.conf
粘貼以下配置塊:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
請注意,我們已將root
配置更新為我們的新目錄,並將server_name
更新為我們的域名。保存並關閉文件。
現在啟用並設定了兩個伺服器區塊,以回應基於它們的listen
和server_name
指令(您可以在這裡閱讀有關Nginx如何處理這些指令的更多資訊):
your_domain
:將回應於your_domain
和www.your_domain
的請求。default
:將回應於80端口的所有未匹配其他兩個區塊的請求。
接下來,使用nginx -t
測試確保Nginx文件中沒有語法錯誤:
- sudo nginx -t
如果沒有問題,重新啟動Nginx以啟用更改:
- sudo systemctl restart nginx
在從瀏覽器測試更改之前,您需要更新伺服器的SELinux安全上下文,以允許Nginx從/var/www/your_domain
目錄提供內容。
此chcon
上下文更新將允許以HTTP內容形式提供自訂文件根目錄:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Nginx現在應該正在提供您的域名。您可以通過訪問http://your_domain
來測試,您應該會看到類似以下的內容:
結論
現在您已經安裝了網頁伺服器,您有很多選擇可以提供不同類型的內容,以及使用不同技術來打造更豐富的體驗。
若要為您的域名設定 HTTPS 並使用免費的 SSL 憑證,可以參考使用 Let’s Encrypt 進行設置,請參閱 在 Rocky Linux 9 上如何使用 Let’s Encrypt 保護 Nginx。
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9