Ubuntu18.04搭建nginx伺服器
1.ubuntu可以從源直接安裝nginx
$ sudo apt-get update
$ sudo apt-get install nginx
2.調整防火牆,以免出現各種問題
$ sudo ufw app list
獲得應用程式配置檔案的列表:
可用應用程式: CUPS Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
正如你所看到的,Nginx有三個配置檔案可用:
輸入以下命令以啟動服務:
- Nginx Full :此配置檔案開啟埠80(正常,未加密的網路流量)和埠443(TLS / SSL加密流量)
- Nginx HTTP
- Nginx HTTPS :此配置檔案僅開啟埠443(TLS / SSL加密流量)
$ sudo ufw allow 'Nginx HTTP'
$ sudo ufw allow 'Nginx HTTPS'
輸入以下命令以啟動防火牆,據知有部分使用者是沒有啟動防火牆的,還是建議開啟
$ sudo ufw enable
輸入以下命令以檢視防火牆狀態:
$ sudo ufw status
可以看到允許通過的服務有哪些:
Nginx HTTP ALLOW Anywhere Nginx HTTPS ALLOW Anywhere OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere Nginx HTTP (v6) ALLOW Anywhere (v6) Nginx HTTPS (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
3.檢查您的Web伺服器是否在執行
$ sudo 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 Mon 2018-09-24 10:59:51 CST; 1h 8min ago Docs: man:nginx(8) Main PID: 5213 (nginx) Tasks: 5 (limit: 4915) CGroup: /system.slice/nginx.service ├─5213 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ├─5215 nginx: worker process ├─5216 nginx: worker process ├─5217 nginx: worker process └─5218 nginx: worker process
9月 24 10:59:49 os systemd[1]: Starting A high performance web server and a reverse proxy server... 9月 24 10:59:51 os systemd[1]: Started A high performance web server and a reverse proxy server. 4.檢查是否可以訪問預設網頁,在瀏覽器輸入:
http://本地IP地址
如果配置正常,可以看到一個類似於下面的頁面,說明你的nginx伺服器是正常的:
4.管理nginx程序
現在您的Web伺服器已啟動並執行,讓我們來回顧一些基本的管理命令
要停止您的Web伺服器,請鍵入:sudo systemctl stop nginx
要啟動你的Web伺服器,請輸入:sudo systemctl start nginx
要重啟你的Web伺服器,請輸入:sudo systemctl restart nginx
如果您只是簡單地進行配置更改,Nginx通常可以重新載入而不會丟失連線。 為此,請輸入:sudo systemctl reload nginx
預設情況下,Nginx配置為在伺服器引導時自動啟動。 如果這不是您想要的,可以通過輸入以下命令來禁用此行為:sudo systemctl disable nginx
要重新啟用服務以在啟動時啟動,您可以鍵入:sudo systemctl enable nginx
5.設定伺服器塊
Ubuntu 18.04上的Nginx預設啟用了一個伺服器模組,該模組被配置為在/var/www/html
目錄下提供文件。 雖然這適用於單個站點,但如果您託管多個站點,它可能會變得很笨重。 我們不必修改/var/www/html
,而是在/var/www
為我們的example.com網站建立一個目錄結構,並將/var/www/html
保留為預設目錄,如果客戶端請求沒有匹配任何其他網站。
按如下所示為example.com建立目錄,使用-p
標誌建立任何必需的父目錄:
$ sudo mkdir -p /var/www/example.com/html
接下來,使用$USER
環境變數分配目錄的所有權:
$ sudo chown -R $USER:$USER /var/www/example.com/html/
如果你沒有修改你的umask
值,你的web根目錄的許可權應該是正確的,但是你可以通過輸入:
$ sudo chmod -R 755 /var/www/example.com/
接下來,使用gedit
或您最喜歡的編輯器建立一個index.html
頁面示例:
$ gedit /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>
為了讓Nginx提供這些內容,有必要建立一個具有正確指令的伺服器塊。 我們不要直接修改預設配置檔案,而是在/etc/nginx/sites-available/ example.com
上建立一個新檔案:
$ sudo gedit /etc/nginx/sites-available/example.com
貼上到以下配置塊中,該塊類似於預設值,但已更新為我們的新目錄和域名:
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;
}
}
請注意,我們已將root
配置更新到我們的新目錄,並將server_name
為我們的域名。
接下來,讓我們通過建立一個連結到啟動sites-enabled
目錄來啟用該檔案,該目錄是Nginx在啟動過程中讀取的:
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
現在啟用兩個伺服器模組並將其配置為基於listen
和server_name
指令響應請求(您可以閱讀關於Nginx如何處理這些指令的更多資訊):
example.com
:將響應example.com
和www.example.com
請求。default
:將響應埠80上與其他兩個塊不匹配的任何請求。
為了避免新增額外的伺服器名稱可能導致的雜湊桶記憶體問題,有必要調整/etc/nginx/nginx.conf
檔案中的單個值。
開啟檔案:sudo gedit /etc/nginx/nginx.conf
找到server_names_hash_bucket_size
指令並刪除#
符號以取消註釋該行:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
接下來,測試以確保您的Nginx檔案中沒有語法錯誤:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
如果沒有任何問題,請重新啟動Nginx以啟用您的更改:
$ sudo systemctl restart nginx
Nginx現在應該為您的域名提供服務。 你可以通過導航到http://example.com
來測試它,你應該看到類似這樣的內容:
6.熟悉重要的Nginx檔案和目錄
nginx伺服器配置檔案:
nginx伺服器日誌檔案:
至此,你已經學會了如何搭建nginx伺服器並讓其顯示正確的web網頁!
/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錯誤都會記錄在這個日誌中。