Nginx是世界上最受歡迎的網(wǎng)絡(luò)服務(wù)器之一,負(fù)責(zé)托管互聯(lián)網(wǎng)上一些規(guī)模最大,流量最高的網(wǎng)站。在大多數(shù)情況下,它比Apache更具資源友好性,可以用作Web服務(wù)器或反向代理。
在本教程中,我們將討論如何在Debian 9服務(wù)器上安裝Nginx。
在開始本教程之前,您應(yīng)該有一個(gè)在服務(wù)器上配置了sudo權(quán)限的常規(guī)非root用戶和一個(gè)活動(dòng)防火墻。您可以按照Debian 9的初始服務(wù)器設(shè)置教程了解如何設(shè)置它們。
沒有服務(wù)器的同學(xué)可以在這里購買,不過我個(gè)人更推薦您使用免費(fèi)的騰訊云開發(fā)者實(shí)驗(yàn)室進(jìn)行試驗(yàn),學(xué)會(huì)安裝后再購買服務(wù)器。
如果您有可用的帳戶,請(qǐng)以非root用戶身份登錄以開始。
因?yàn)镹ginx在Debian的默認(rèn)存儲(chǔ)庫中可用,所以可以使用apt
打包系統(tǒng)從這些存儲(chǔ)庫安裝它。
由于這是我們?cè)诖藭?huì)話中與apt
包裝系統(tǒng)的第一次互動(dòng),因此我們還要更新我們的本地包索引,以便我們可以訪問最新的包列表。之后,我們可以安裝nginx
:
sudo apt updatesudo apt install nginx
接受該過程后,apt
將Nginx和任何所需的依賴項(xiàng)安裝到您的服務(wù)器。
在測(cè)試Nginx之前,需要調(diào)整防火墻軟件以允許訪問服務(wù)。
通過鍵入以下內(nèi)容列出ufw
了解如何使用的應(yīng)用程序配置:
sudo ufw app list
您應(yīng)該獲得應(yīng)用程序配置文件的列表:
Available applications:... Nginx Full Nginx HTTP Nginx HTTPS...
如您所見,Nginx有三種配置文件:
80
(正常,未加密的Web流量)和端口443
(TLS / SSL加密流量)80
(正常,未加密的Web流量)443
(TLS / SSL加密流量)建議您啟用限制性最強(qiáng)的配置文件,該配置文件仍允許您配置的流量。由于我們尚未在本教程中為我們的服務(wù)器配置SSL,因此我們只需要允許端口80
上的流量。
您可以輸入以下命令啟用此功能
sudo ufw allow 'Nginx HTTP'
您可以鍵入以下內(nèi)容來驗(yàn)證更改:
sudo ufw status
您應(yīng)該在顯示的輸出中看到允許的HTTP流量:
Status: active?To Action From-- ------ ----OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
在安裝過程結(jié)束時(shí),Debian 9啟動(dòng)了Nginx。Web服務(wù)器應(yīng)該已經(jīng)啟動(dòng)并運(yùn)行。
我們可以通過鍵入以下內(nèi)容來檢查systemd
init系統(tǒng)以確保服務(wù)正在運(yùn)行:
systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-09-04 18:15:57 UTC; 3min 28s ago Docs: man:nginx(8) Process: 2402 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 2399 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 2404 (nginx) Tasks: 2 (limit: 4915) CGroup: /system.slice/nginx.service ├─2404 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2405 nginx: worker process
如您所見,該服務(wù)似乎已成功啟動(dòng)。但是,測(cè)試它的最佳方法是從Nginx實(shí)際請(qǐng)求頁面。
您可以通過導(dǎo)航到服務(wù)器的IP地址來訪問默認(rèn)的Nginx登錄頁面以確認(rèn)軟件正常運(yùn)行。如果您不知道服務(wù)器的IP地址,請(qǐng)嘗試在服務(wù)器的命令提示符下鍵入:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
你會(huì)得到幾行。您可以在Web瀏覽器中依次嘗試以查看它們是否有效。
獲得服務(wù)器的IP地址后,將其輸入瀏覽器的地址欄:
http://your_server_ip
您應(yīng)該會(huì)看到默認(rèn)的Nginx登錄頁面:
此頁面包含在Nginx中,以向您顯示服務(wù)器正在正常運(yùn)行。
現(xiàn)在您已啟動(dòng)并運(yùn)行Web服務(wù)器,讓我們回顧一些基本的管理命令。
要停止Web服務(wù)器,請(qǐng)鍵入:
sudo systemctl stop nginx
要在Web服務(wù)器停止時(shí)啟動(dòng)它,請(qǐng)鍵入:
sudo systemctl start nginx
要停止然后再次啟動(dòng)該服務(wù),請(qǐng)鍵入:
sudo systemctl restart nginx
如果您只是進(jìn)行配置更改,Nginx通??梢栽诓粊G棄連接的情況下重新加載。為此,請(qǐng)鍵入:
sudo systemctl reload nginx
默認(rèn)情況下,Nginx配置為在服務(wù)器引導(dǎo)時(shí)自動(dòng)啟動(dòng)。如果這不是您想要的,您可以通過鍵入以下內(nèi)容來禁用此行為:
sudo systemctl disable nginx
要重新啟用服務(wù)以在啟動(dòng)時(shí)啟動(dòng),您可以鍵入:
sudo systemctl enable nginx
使用Nginx Web服務(wù)器時(shí),服務(wù)器塊(類似于Apache中的虛擬主機(jī))可用于封裝配置詳細(xì)信息并從單個(gè)服務(wù)器托管多個(gè)域。我們將設(shè)置一個(gè)名為example.com的域名,但您應(yīng)將其替換為您自己的域名。
Debian 9上的Nginx默認(rèn)啟用一個(gè)服務(wù)器塊,配置為從/var/www/html
中的目錄提供文檔。雖然這適用于單個(gè)站點(diǎn),但如果您托管多個(gè)站點(diǎn),它可能會(huì)變得難以處理。我們不是修改/var/www/html
,而是在我們的example.com站點(diǎn)內(nèi)用/var/www
創(chuàng)建一個(gè)目錄結(jié)構(gòu),如果客戶端請(qǐng)求與任何其他站點(diǎn)不匹配,則將/var/www/html
保留為要提供的默認(rèn)目錄。
按如下所示為example.com創(chuàng)建目錄,使用-p
標(biāo)志創(chuàng)建任何必需的父目錄:
sudo mkdir -p /var/www/example.com/html
接下來,使用$USER
環(huán)境變量分配目錄的所有權(quán):
sudo chown -R $USER:$USER /var/www/example.com/html
如果您尚未修改您的umask
值,則您的Web根目錄的權(quán)限應(yīng)該是正確的,但您可以通過鍵入以下內(nèi)容來確保:
sudo chmod -R 755 /var/www/example.com
接下來,使用網(wǎng)頁nano
或你喜歡的編輯器創(chuàng)建一個(gè)示例index.html
:
nano /var/www/example.com/html/index.html
在里面,添加以下示例HTML:
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com server block is working!</h1> </body></html>
完成后保存并關(guān)閉文件。
為了讓Nginx提供此內(nèi)容,必須使用正確的指令創(chuàng)建服務(wù)器塊。不要直接修改默認(rèn)配置文件,而是在/etc/nginx/sites-available/example.com
創(chuàng)建一個(gè)新文件:
sudo nano /etc/nginx/sites-available/example.com
粘貼在以下配置塊中,類似于默認(rèn)配置塊,但為我們的新目錄和域名更新:
server { listen 80; listen [::]:80;? root /var/www/example.com/html; index index.html index.htm index.nginx-debian.html;? server_name example.com www.example.com;? location / { try_files $uri $uri/ =404; }}
請(qǐng)注意,我們已將root
配置更新到新目錄,將server_name
更新到我們的域名。
接下來,讓我們通過創(chuàng)建從sites-enabled
目錄到Nginx在啟動(dòng)期間讀取的目錄的鏈接來啟用該文件:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
現(xiàn)在啟用了兩個(gè)服務(wù)器塊,并將其配置為根據(jù)請(qǐng)求listen
和server_name
指令響應(yīng)請(qǐng)求:
example.com
:將滿足example.com
和www.example.com
的要求作出回應(yīng)。default
:將響應(yīng)端口80
上與其他兩個(gè)塊不匹配的任何請(qǐng)求。為避免添加其他服務(wù)器名稱可能導(dǎo)致的哈希桶內(nèi)存問題,需要調(diào)整/etc/nginx/nginx.conf
文件中的單個(gè)值。打開文件:
sudo nano /etc/nginx/nginx.conf
找到server_names_hash_bucket_size
指令并刪除#
符號(hào)以取消注釋該行:
...http { ... server_names_hash_bucket_size 64; ...}...
完成后保存并關(guān)閉文件。
接下來,測(cè)試以確保您的任何Nginx文件中沒有語法錯(cuò)誤:
sudo nginx -t
如果沒有任何問題,您將看到以下輸出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful
配置測(cè)試通過后,重新啟動(dòng)Nginx以啟用更改:
sudo systemctl restart nginx
Nginx現(xiàn)在應(yīng)該為您的域名服務(wù)。你可以通過導(dǎo)航到http://example.com
來測(cè)試這個(gè),你應(yīng)該看到這樣的東西:
既然您已經(jīng)知道如何管理Nginx服務(wù)本身,那么您應(yīng)該花幾分鐘時(shí)間熟悉一些重要的目錄和文件。
/var/www/html
:實(shí)際的Web內(nèi)容(默認(rèn)情況下僅包含您之前看到的默認(rèn)Nginx頁面)是從/var/www/html
目錄中提供的。這可以通過更改Nginx配置文件來更改。/etc/nginx
:Nginx配置目錄。所有Nginx配置文件都駐留在此處。/etc/nginx/nginx.conf
:主要的Nginx配置文件。可以對(duì)此進(jìn)行修改以更改Nginx全局配置。/etc/nginx/sites-available/
:可以存儲(chǔ)每站點(diǎn)服務(wù)器塊的目錄。除非鏈接到目錄,否則Nginx不會(huì)使用sites-enabled
目錄中的配置文件。通常,所有服務(wù)器塊配置都在此目錄中完成,然后通過鏈接到其他目錄來啟用。/etc/nginx/sites-enabled/
:存儲(chǔ)已啟用的每站點(diǎn)服務(wù)器塊的目錄。通常,這些是通過鏈接到sites-available
目錄中的配置文件來創(chuàng)建的。/etc/nginx/snippets
:此目錄包含可以包含在Nginx配置中其他位置的配置片段??赡芸芍貜?fù)的配置段是重構(gòu)為片段的良好候選者。/var/log/nginx/access.log
:除非Nginx配置為執(zhí)行其他操作,否則對(duì)Web服務(wù)器的每個(gè)請(qǐng)求都將記錄在此日志文件中。/var/log/nginx/error.log
:任何Nginx錯(cuò)誤都將記錄在此日志中。現(xiàn)在您已安裝了Web服務(wù)器,您可以選擇多種類型的內(nèi)容,以及可用于為用戶創(chuàng)建更豐富體驗(yàn)的技術(shù)。
想要了解更多關(guān)于安裝Nginx的相關(guān)教程,請(qǐng)前往騰訊云+社區(qū)學(xué)習(xí)更多知識(shí)。
參考文獻(xiàn):《How To Install Nginx on Debian 9》
聯(lián)系客服