作為一個新手小前端總是想向全堆疊攻城獅發展,最近準備學習學習Nginx方面的知識,剛踏出第一步就遇到了問題:
我下載了一個VMware Workstation安裝了一個linux(我再linux下載頁面看到有桌面系統Ubuntu和centerOS),中了前端毒的我果斷選擇了Ubuntu安裝好之后,發現界面還多好看的,頓生好感;

,Ubuntu安裝好之后,我已經迫不及待的要用我的Win10電腦使用Xshell來連接我的linux,畢竟第一次玩兒,還是相當激動的,
打開Terminal輸入ifconfig,把下面的IP在Xshell中輸入,用戶名密碼輸入點擊連接……,自覺得會好順利,心中有點小驕傲……

隨之而來的是久違的失敗……

作為搬磚人,怎么可能被一點點小失敗感到沮喪,各種查詢資料,終于領悟到:由于xshell與Ubuntu是通過ssh協議遠程連接的,所以,連接之前需要給Ubuntu安裝ssh服務器,
(1)在Ubuntu終端中輸入命令 sudo apt-get install openssh-server,(安裝完之后其實應該是可以連接的,不過經歷過一次失敗后還是比較謹慎,)
(2)保證 xshell 所在主機( win10 ) 和 ubuntu( 虛擬機 ) 相互能平通,因為ssh遠程連接是通過網路連接的,如果網路不通,就無法連接,
我在win10上打開cmd輸入ping xxxx.xxx.xxx.xxx(win10的Ubunto)看看能不能連接到我的Ubunto(結果相當友好——通)
我在Ubunto上打開cmd輸入ping xxxx.xxx.xxx.xxx(win10的IP)看看能不能連接到我的win10(結果相當友好——通)

連接成功了;
接下來就是安裝Nginx的相關依賴了(pcre、zlib、OpenSSL)
Nginx是高度自由化的Web服務器,它的功能是由許多模塊來支持,如果使用了某個模塊,這個模塊使用了一些類似zlib或OpenSSL等的第三方庫,那么就必須先安裝這些軟體,Ubuntu下不像在centOS中使用yum直接在線安裝,可以使用以下方法,
(1)PCRE庫
PCRE庫支持正則運算式,如果我們在組態檔nginx.conf中使用了正則運算式,那么在編譯Nginx時就必須把PCRE庫編譯進Nginx,因為Nginx的HTTP模塊需要靠它來決議正則運算式,另外,pcre-devel是使用PCRE做二次開發時所需要的開發庫,包括頭檔案等,這也是編譯Nginx所必須使用的,可以這樣安裝:
sudo apt-get install libpcre3 libpcre3-dev
(2)zlib庫
zlib庫用于對HTTP包的內容做gzip格式的壓縮,如果我們在nginx.conf中配置了gzip on,并指定對于某些型別(content-type)的HTTP回應使用gzip來進行壓縮以減少網路傳輸量,則在編譯時就必須把zlib編譯進Nginx,zlib-devel是二次開發所需要的庫,可以這樣安裝:
sudo apt-get install zlib1g-dev
(3)OpenSSL庫
如果服務器不只是要支持HTTP,還需要在更安全的SSL協議上傳輸HTTP,那么需要擁有OpenSSL,另外,如果我們想使用MD5、SHA1等散列函式,那么也需要安裝它,可以這樣安裝:
sudo apt-get install openssl libssl-dev
安裝Nginx
Nginx可在Ubuntu的默認存盤庫中使用,因此可以使用apt封裝系統從這些存盤庫安裝Nginx,
由于這是我們在本次會議中與apt封裝系統的首次互動,我們將更新我們的本地包裝索引,以便我們可以訪問最新的包裝清單, 之后,我們可以安裝nginx :
sudo apt update
sudo apt install nginx
在接受該程序之后, apt會將Nginx和任何所需的依賴項安裝到您的服務器上,
在測驗Nginx之前,需要調整防火墻軟體以允許訪問該服務, Nginx在安裝時將自己注冊為ufw服務,這使得Nginx可以直接訪問Nginx,
通過鍵入以下列出了知道如何使用的應用程式配置:
sudo ufw app list
您應該獲得應用程式組態檔的串列:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
正如所看到的,Nginx有三個組態檔可用:
- Nginx Full :此組態檔打開埠80(正常,未加密的網路流量)和埠443(TLS / SSL加密流量)
- Nginx HTTP :此組態檔僅打開埠80(正常,未加密的網路流量)
- Nginx HTTPS :此組態檔僅打開埠443(TLS / SSL加密流量)
建議您啟用最嚴格的組態檔,該組態檔仍將允許您配置的流量, 由于我們尚未在本指南中為我們的服務器配置SSL,因此我們只需要允許埠80上的流量,
可以通過輸入以下命令啟用它
sudo ufw allow 'Nginx HTTP'
您可以輸入以下內容來驗證更改:
sudo ufw status
您應該在顯示的輸出中看到允許的HTTP通信量:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
檢查web服務
我們可以通過鍵入以下命令來檢查systemd init系統以確保服務正在運行:
systemctl status nginx
Output● 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 Fri 2018-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
正如您在上面看到的,該服務似乎已成功啟動, 然而,測驗這個最好的方法是實際上從Nginx請求一個頁面,
您可以訪問默認的Nginx登錄頁面,通過導航到您的服務器的IP地址來確認軟體正常運行, 如果您不知道服務器的IP地址,可以通過幾種不同的方式獲得,
嘗試在服務器的命令提示符處輸入以下內容:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
會回到幾行, 可以嘗試在網頁瀏覽器中查看它們是否作業,
另一種方法是輸入此資訊,該資訊應該為您提供從互聯網上的其他位置看到的公共IP地址:
curl -4 icanhazip.com
當擁有服務器的IP地址時,請將其輸入到瀏覽器的地址欄中:
http://your_server_ip
應該就看到默認的Nginx登陸頁面啦:

Nginx附帶這個頁面,就說明服務器運行正常,
管理Nginx行程
Web服務器已啟動并運行,回顧一些基本的管理命令,
要停止Web服務器,請鍵入:
sudo systemctl stop nginx
停止時要啟動Web服務器,請輸入:
sudo systemctl start nginx
要停止并再次啟動服務,請鍵入:
sudo systemctl restart nginx
如果只是簡單地進行配置更改,Nginx通常可以重新加載而不會丟失連接, 為此,請輸入:
sudo systemctl reload nginx
默認情況下,Nginx配置為在服務器引導時自動啟動, 如果這不是想要的,可以通過輸入以下命令來禁用此行為:
sudo systemctl disable nginx
要重新啟用服務以在啟動時啟動,可以鍵入:
sudo systemctl enable nginx
服務器模塊
使用Nginx Web服務器時,可以使用服務器模塊 (類似于Apache中的虛擬主機)來封裝配置詳細資訊,并從單個服務器托管多個域, 我們將建立一個名為xxx.com的域名,但您應該將其替換為您自己的域名 ,
Ubuntu 上的Nginx默認啟用了一個服務器模塊,該模塊被配置為在/var/www/html目錄下提供檔案, 雖然這適用于單個站點,但如果托管多個站點,它可能會變得很笨重, 不必修改/var/www/html ,而是在/var/www為xxx.com網站創建一個目錄結構,并將/var/www/html保留為默認目錄,如果客戶端請求沒有匹配任何其他網站,
按如下所示為xxx.com創建目錄,使用-p標志創建任何必需的父目錄:
sudo mkdir -p /var/www/xxx.com/html
接下來,使用$USER環境變數分配目錄的所有權:
sudo chown -R $USER:$USER /var/www/xxx.com/html
如果沒有修改umask值,web根目錄的權限應該是正確的,但是可以通過輸入:
sudo chmod -R 755 /var/www/xxx.com
接下來,使用nano或最喜歡的編輯器創建一個index.html頁面示例:
nano /var/www/xxx.com/html/index.html
在里面,添加下面的示例HTML:
/var/www/xxx.com/html/index.html
<html>
<head>
<title>Welcome to xxx.com!</title>
</head>
<body>
<h1>Success! The xxx.com server block is working!</h1>
</body>
</html>
完成后保存并關閉檔案,
為了讓Nginx提供這些內容,有必要創建一個具有正確指令的服務器塊, 不要直接修改默認組態檔,而是在/etc/nginx/sites-available/ xxx.com上創建一個新檔案:
sudo nano /etc/nginx/sites-available/xxx.com
粘貼到以下配置塊中,該塊類似于默認值,但已更新為新目錄和域名:
/etc/nginx/sites-available/xxx.com
server {
listen 80;
listen [::]:80;
root /var/www/xxx.com/html;
index index.html index.htm index.nginx-debian.html;
server_name xxx.com www.xxx.com;
location / {
try_files $uri $uri/ =404;
}
}
請注意,已將root配置更新到我們的新目錄,并將server_name為我們的域名,
接下來,通過創建一個鏈接到啟動sites-enabled目錄來啟用該檔案,該目錄是Nginx在啟動程序中讀取的:
sudo ln -s /etc/nginx/sites-available/xxx.com /etc/nginx/sites-enabled/
現在啟用兩個服務器模塊并將其配置為基于listen和server_name指令回應請求(可以閱讀關于Nginx如何處理這些指令的更多資訊):
xxx.com:將回應xxx.com和www.xxx.com請求,default:將回應埠80上與其他兩個塊不匹配的任何請求,
為了避免添加額外的服務器名稱可能導致的哈希桶記憶體問題,有必要調整/etc/nginx/nginx.conf檔案中的單個值, 打開檔案:
sudo nano /etc/nginx/nginx.conf
找到server_names_hash_bucket_size指令并洗掉#符號以取消注釋該行:
/etc/nginx/nginx.conf
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
接下來,測驗以確保Nginx檔案中沒有語法錯誤:
sudo nginx -t
完成后保存并關閉檔案,
如果沒有任何問題,請重新啟動Nginx以啟用更改:
sudo systemctl restart nginx
Nginx現在應該為域名提供服務,可以通過導航到http:// xxx.com來測驗它,應該就看到類似這樣的內容:
Success! The xxx.com server block is working!
重要的Nginx檔案和目錄
已經知道如何管理Nginx服務本身,那就再熟悉一些重要的目錄和檔案,
內容
/var/www/html:默認情況下,實際的網頁內容僅包含之前看到的默認Nginx頁面,它將在/var/www/html目錄中提供, 這可以通過改變Nginx組態檔來改變,
服務器配置
/etc/nginx:Nginx配置目錄, 所有的Nginx組態檔都駐留在這里,/etc/nginx/nginx.conf:主要的Nginx組態檔, 這可以修改,以更改Nginx全域配置,/etc/nginx/sites-available/:可存盤每個站點服務器塊的目錄, 除非將Nginx鏈接到sites-enabled了sites-enabled目錄,否則Nginx不會使用此目錄中的組態檔, 通常,所有服務器塊配置都在此目錄中完成,然后通過鏈接到其他目錄啟用,/etc/nginx/sites-enabled/:存盤啟用的每個站點服務器塊的目錄, 通常,這些是通過鏈接到sites-available目錄中的組態檔創建的,/etc/nginx/snippets:這個目錄包含可以包含在Nginx配置其他地方的配置片段, 可重復配置的片段可以重構為片段,
服務器日志
/var/log/nginx/access.log:除非Nginx配置為其他方式,否則每個對Web服務器的請求都會記錄在此日志檔案中,/var/log/nginx/error.log:任何Nginx錯誤都會記錄在這個日志中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237194.html
標籤:其他
上一篇:使用Auto.js完成一鍵自動登錄武漢理工大學鑒湖宿舍校園網(安卓手機端)
下一篇:攻防世界MISC新手區
