Nginx是一款高性能的開源Web服務(wù)器,同時(shí)也充當(dāng)反向代理服務(wù)器和負(fù)載均衡器。它設(shè)計(jì)簡(jiǎn)潔,效率出眾,以處理大量并發(fā)連接而聞名,成為許多網(wǎng)站和應(yīng)用的首選服務(wù)器軟件。在本文中,我們將深入介紹如何在Ubuntu 22.04上安裝、配置和管理Nginx,以便您能更好地利用其強(qiáng)大功能。
Nginx(發(fā)音為"engine x")是由俄羅斯開發(fā)者Igor Sysoev創(chuàng)建的一款輕量級(jí)、高性能的Web服務(wù)器。它首次發(fā)布于2004年,如今已成為全球最受歡迎的Web服務(wù)器之一。Nginx以其卓越的性能和靈活性而聞名,適用于靜態(tài)和動(dòng)態(tài)內(nèi)容的服務(wù),以及負(fù)載均衡和反向代理等多種應(yīng)用場(chǎng)景。
為什么選擇Nginx?
Nginx之所以備受青睞,有以下幾個(gè)顯著的優(yōu)勢(shì):
-
高性能: Nginx的事件驅(qū)動(dòng)架構(gòu)使其在處理大量并發(fā)連接時(shí)表現(xiàn)出色。
-
低資源消耗: 相較于傳統(tǒng)服務(wù)器軟件,Nginx的內(nèi)存消耗較低,能夠高效利用系統(tǒng)資源。
-
可擴(kuò)展性: Nginx支持模塊化架構(gòu),可以通過(guò)添加模塊來(lái)擴(kuò)展其功能,滿足各種需求。
-
負(fù)載均衡: Nginx作為負(fù)載均衡器,能夠平衡多個(gè)服務(wù)器之間的流量,提高系統(tǒng)的可用性和穩(wěn)定性。
-
反向代理: Nginx可以作為反向代理服務(wù)器,將請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器,隱藏真實(shí)服務(wù)器的細(xì)節(jié),提高安全性。
安裝Nginx
在開始安裝Nginx之前,確保您已經(jīng)完成了一些必要的準(zhǔn)備工作。這包括更新系統(tǒng)軟件包列表和安裝所需的依賴項(xiàng)。
在終端中執(zhí)行以下命令,以確保您的系統(tǒng)軟件包列表是最新的:
sudo apt update
升級(jí)系統(tǒng)以應(yīng)用最新的安全更新和功能改進(jìn):
sudo apt upgrade
在安裝Nginx之前,您可能需要安裝一些依賴項(xiàng),以確保Nginx能夠正常運(yùn)行。一般來(lái)說(shuō),這些依賴項(xiàng)已經(jīng)在Ubuntu系統(tǒng)中安裝,但為了確保完整性,您可以運(yùn)行以下命令:
sudo apt install -y curl gnupg2 ca-certificates lsb-release
通過(guò)這些步驟,您的系統(tǒng)將會(huì)是最新的,并且具備了安裝Nginx所需的基本條件。
使用apt安裝Nginx
現(xiàn)在,我們將通過(guò)apt包管理器在Ubuntu 22.04上安裝Nginx。apt是Ubuntu系統(tǒng)中用于管理軟件包的強(qiáng)大工具,使得安裝和更新軟件變得非常簡(jiǎn)便。
執(zhí)行以下命令以安裝Nginx:
sudo apt install -y nginx
這會(huì)下載并安裝Nginx及其相關(guān)組件。 -y
選項(xiàng)表示在安裝過(guò)程中不詢問(wèn)任何確認(rèn),直接進(jìn)行安裝。
安裝完成后,可以使用以下命令啟動(dòng)Nginx服務(wù):
sudo systemctl start nginx
確保Nginx在系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng),可以執(zhí)行以下命令:
sudo systemctl enable nginx
現(xiàn)在,Nginx已成功安裝并正在運(yùn)行。您可以通過(guò)在瀏覽器中輸入服務(wù)器的IP地址或域名來(lái)驗(yàn)證Nginx是否正常工作。如果一切正常,您將看到Nginx的歡迎頁(yè)面。
Nginx配置
Nginx的配置文件位于/etc/nginx
目錄下,其中最主要的配置文件是nginx.conf
。我們將學(xué)習(xí)如何修改默認(rèn)網(wǎng)站配置并添加新的虛擬主機(jī)。
打開/etc/nginx/nginx.conf
文件,了解Nginx的主要配置結(jié)構(gòu)。Nginx的配置文件采用塊結(jié)構(gòu),主要分為events
、http
和servers
等塊。在http
塊中,會(huì)包含全局的HTTP配置,而servers
塊包含了虛擬主機(jī)的配置。
user www-data;
worker_processes auto;
...
http {
...
server {
listen 80;
server_name example.com;
...
}
...
}
默認(rèn)情況下,Nginx配置文件中包含一個(gè)默認(rèn)的虛擬主機(jī)配置,監(jiān)聽80端口。您可以通過(guò)修改此配置來(lái)更改默認(rèn)網(wǎng)站的行為。打開/etc/nginx/sites-available/default
文件:
sudo nano /etc/nginx/sites-available/default
您可以修改配置中的內(nèi)容,如更改根目錄、添加或修改server_name
等選項(xiàng)。保存并退出后,重新加載Nginx以應(yīng)用更改:
sudo systemctl reload nginx
要添加新的虛擬主機(jī),首先在/etc/nginx/sites-available/
目錄下創(chuàng)建一個(gè)新的配置文件。例如,創(chuàng)建一個(gè)名為mywebsite
的配置文件:
sudo nano /etc/nginx/sites-available/mywebsite
在新文件中,可以定義新虛擬主機(jī)的配置,例如:
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
location / {
root /var/www/mywebsite;
index index.html;
}
}
保存并退出后,創(chuàng)建配置文件的符號(hào)鏈接到/etc/nginx/sites-enabled/
目錄:
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
最后,重新加載Nginx以應(yīng)用更改:
sudo systemctl reload nginx
現(xiàn)在,您已經(jīng)學(xué)會(huì)了如何修改默認(rèn)網(wǎng)站配置和添加新的虛擬主機(jī)。
管理Nginx服務(wù)
了解如何管理Nginx服務(wù)是非常重要的,包括啟動(dòng)、停止和重啟服務(wù),以及查看Nginx的狀態(tài)和日志。
使用以下命令啟動(dòng)Nginx服務(wù):
sudo systemctl start nginx
停止Nginx服務(wù):
sudo systemctl stop nginx
重新啟動(dòng)Nginx服務(wù):
sudo systemctl restart nginx
要查看Nginx服務(wù)的當(dāng)前狀態(tài),可以使用以下命令:
sudo systemctl status nginx
Nginx的日志文件位于/var/log/nginx/
目錄下??梢允褂靡韵旅畈榭村e(cuò)誤日志:
sudo tail -f /var/log/nginx/error.log
通過(guò)這些命令,您可以輕松地啟動(dòng)、停止和重啟Nginx服務(wù),并查看相關(guān)的狀態(tài)和日志信息。
靜態(tài)站點(diǎn)部署
首先,創(chuàng)建一個(gè)存放靜態(tài)網(wǎng)站文件的目錄。以/var/www/mywebsite
為例:
sudo mkdir -p /var/www/mywebsite
將您的靜態(tài)網(wǎng)站文件復(fù)制到剛剛創(chuàng)建的目錄。例如,如果您有一個(gè)簡(jiǎn)單的HTML頁(yè)面:
sudo cp /path/to/your/website/* /var/www/mywebsite/
打開Nginx配置文件:
sudo nano /etc/nginx/sites-available/mywebsite
在server
塊中添加以下配置,指向剛剛創(chuàng)建的靜態(tài)網(wǎng)站目錄:
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
location / {
root /var/www/mywebsite;
index index.html;
}
}
保存配置文件后,創(chuàng)建配置文件的符號(hào)鏈接并重新加載Nginx:
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
sudo systemctl reload nginx
現(xiàn)在,您可以通過(guò)在瀏覽器中輸入您的服務(wù)器IP地址或域名來(lái)訪問(wèn)您的靜態(tài)網(wǎng)站。
動(dòng)態(tài)站點(diǎn)部署
使用以下命令安裝PHP和相關(guān)組件:
sudo apt install -y php-fpm
打開Nginx的虛擬主機(jī)配置文件:
sudo nano /etc/nginx/sites-available/mywebsite
在server
塊中添加以下配置,以啟用PHP處理:
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
location / {
root /var/www/mywebsite;
index index.php index.html;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
保存配置文件后,創(chuàng)建配置文件的符號(hào)鏈接并重新加載Nginx:
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
sudo systemctl reload nginx
現(xiàn)在,您可以在/var/www/mywebsite/
目錄下創(chuàng)建一個(gè)簡(jiǎn)單的index.php
文件,并通過(guò)瀏覽器訪問(wèn)。例如:
<?php
phpinfo();
?>
通過(guò)訪問(wèn)您的域名或IP地址,您應(yīng)該能夠看到PHP信息頁(yè)面,這表示Nginx已成功配置為支持PHP。
HTTPS配置
使用Let’s Encrypt提供的Certbot工具可以輕松申請(qǐng)和管理SSL證書。首先,安裝Certbot:
sudo apt install -y certbot
然后,運(yùn)行Certbot來(lái)獲取SSL證書:
sudo certbot certonly --nginx -d mywebsite.com -d www.mywebsite.com
Certbot將引導(dǎo)您完成SSL證書的獲取過(guò)程,并將證書文件保存在/etc/letsencrypt/live/mywebsite.com/
目錄中。
打開Nginx虛擬主機(jī)配置文件:
sudo nano /etc/nginx/sites-available/mywebsite
在server
塊中添加以下配置,啟用SSL:
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
# Redirect HTTP to HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mywebsite.com www.mywebsite.com;
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mywebsite.com/chain.pem;
location / {
root /var/www/mywebsite;
index index.php index.html;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
保存配置文件后,創(chuàng)建配置文件的符號(hào)鏈接并重新加載Nginx:
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
sudo systemctl reload nginx
現(xiàn)在,通過(guò)瀏覽器訪問(wèn)您的域名或IP地址,您應(yīng)該能夠通過(guò)HTTPS訪問(wèn)您的網(wǎng)站,且瀏覽器地址欄中顯示安全的鎖圖標(biāo)。
負(fù)載均衡配置
打開Nginx虛擬主機(jī)配置文件:
sudo nano /etc/nginx/sites-available/mywebsite
在server
塊中添加以下負(fù)載均衡配置:
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com;
server backend3.example.com;
}
server {
listen 80;
server_name mywebsite.com www.mywebsite.com;
# Redirect HTTP to HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name mywebsite.com www.mywebsite.com;
ssl_certificate /etc/letsencrypt/live/mywebsite.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/mywebsite.com/chain.pem;
location / {
proxy_pass http://backend;
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_set_header X-Forwarded-Proto $scheme;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
在上述配置中,我們通過(guò)upstream
塊定義了三個(gè)后端服務(wù)器,其中一個(gè)具有更高的權(quán)重(weight=3
)。然后,location /
塊使用proxy_pass
將請(qǐng)求轉(zhuǎn)發(fā)到這個(gè)負(fù)載均衡組。您可以根據(jù)實(shí)際需求調(diào)整權(quán)重和后端服務(wù)器的數(shù)量。
保存配置文件后,創(chuàng)建配置文件的符號(hào)鏈接并重新加載Nginx:
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
sudo systemctl reload nginx
現(xiàn)在,您可以通過(guò)瀏覽器訪問(wèn)您的域名或IP地址,Nginx將會(huì)以負(fù)載均衡的方式將請(qǐng)求分發(fā)到后端服務(wù)器??梢酝ㄟ^(guò)查看后端服務(wù)器的訪問(wèn)日志來(lái)確認(rèn)負(fù)載均衡是否正常工作。
安全性加固
使用ufw
工具配置防火墻規(guī)則,只允許必要的流量通過(guò)。首先,安裝ufw
:
sudo apt install -y ufw
然后,配置防火墻規(guī)則:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
這將禁止所有傳入的流量,僅允許SSH、HTTP和HTTPS的流量通過(guò)。
在Nginx的配置文件中,禁用不必要的模塊可以減少系統(tǒng)的攻擊面。打開Nginx的主配置文件:
sudo nano /etc/nginx/nginx.conf
在文件中找到并注釋掉不必要的模塊:
# 例如,禁用Nginx的autoindex模塊
# load_module modules/ngx_http_autoindex_module.so;
定期更新Nginx和系統(tǒng)是保持系統(tǒng)安全的關(guān)鍵步驟。使用以下命令更新軟件包:
sudo apt update
sudo apt upgrade
可以設(shè)置定期自動(dòng)更新,以確保系統(tǒng)和軟件包保持最新。
性能調(diào)優(yōu)
打開Nginx的主配置文件:
sudo nano /etc/nginx/nginx.conf
根據(jù)服務(wù)器的硬件配置和實(shí)際需求,可以調(diào)整一些性能相關(guān)的參數(shù)。例如:
# 提高工作進(jìn)程數(shù)量
worker_processes auto;
# 提高每個(gè)工作進(jìn)程的最大連接數(shù)
events {
worker_connections 1024;
}
# 調(diào)整連接超時(shí)時(shí)間
http {
...
keepalive_timeout 30s;
...
}
根據(jù)服務(wù)器的負(fù)載和性能表現(xiàn),可以逐步調(diào)整這些參數(shù)以達(dá)到最佳性能。
Nginx可以使用緩存來(lái)存儲(chǔ)靜態(tài)資源,提高網(wǎng)站的響應(yīng)速度。添加以下配置到虛擬主機(jī)配置中:
server {
...
location / {
try_files $uri $uri/ =404;
proxy_pass http://backend;
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_set_header X-Forwarded-Proto $scheme;
# 開啟緩存
proxy_cache my_cache;
proxy_cache_valid 200 1h;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_ignore_headers Cache-Control Expires;
}
location ~ \.php$ {
...
# 禁用緩存
fastcgi_no_cache $cookie_PHPSESSID;
fastcgi_cache_bypass $cookie_PHPSESSID;
fastcgi_cache my_cache;
fastcgi_cache_valid 200 1h;
}
}
以上配置啟用了Nginx的緩存功能,可以根據(jù)實(shí)際需要進(jìn)行調(diào)整。確保在使用緩存時(shí)仔細(xì)考慮緩存的時(shí)間、更新策略和存儲(chǔ)位置。
附加功能
使用Nginx擴(kuò)展模塊
Nginx提供了許多擴(kuò)展模塊,可以通過(guò)添加模塊來(lái)擴(kuò)展Nginx的功能。例如,您可以使用ngx_http_geoip_module
模塊來(lái)實(shí)現(xiàn)基于地理位置的訪問(wèn)控制,或者使用ngx_pagespeed
模塊來(lái)優(yōu)化網(wǎng)站性能。
要使用擴(kuò)展模塊,首先需要編譯Nginx時(shí)包含這些模塊??梢允褂?code>nginx -V命令查看Nginx的編譯配置,確保包含了您需要的模塊。
然后,可以通過(guò)下載源代碼,編譯并安裝包含特定擴(kuò)展模塊的Nginx版本。詳細(xì)的步驟取決于您選擇的擴(kuò)展模塊。
集成Nginx與其他工具
Nginx可以與其他工具和服務(wù)集成,以實(shí)現(xiàn)更廣泛的功能。例如:
-
與Let’s Encrypt一起使用: 集成Let’s Encrypt證書自動(dòng)續(xù)期功能,確保您的SSL證書始終有效。
-
與Content Delivery Network (CDN) 集成: 將Nginx與CDN服務(wù)一起使用,以提高全球用戶訪問(wèn)您網(wǎng)站的速度。
-
與監(jiān)控工具集成: 集成監(jiān)控工具,如Prometheus和Grafana,以實(shí)時(shí)監(jiān)控Nginx的性能和狀態(tài)。
-
與Web Application Firewall (WAF) 集成: 使用WAF來(lái)增強(qiáng)Nginx的安全性,保護(hù)您的網(wǎng)站免受惡意攻擊。
集成Nginx與其他工具需要根據(jù)特定工具的文檔進(jìn)行配置。確保您詳細(xì)了解每個(gè)集成的步驟和配置選項(xiàng)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-841633.html
通過(guò)探索Nginx的附加功能和集成方式,您可以更靈活地適應(yīng)各種場(chǎng)景和需求。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-841633.html
到了這里,關(guān)于如何在 Ubuntu 22.04 上安裝、配置、使用 Nginx?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!