概述
作為一個前端,我覺得必須要學會使用 nginx 干下面幾件事:
- 代理靜態資源
- 設置反向代理(添加https)
- 設置緩存
- 設置 log
- 部署 smtp 服務
- 設置 redis 緩存(選)
下面我按照這個節奏一一研究一遍,把心得記錄下來,供以后開發時參考,相信對其他人也有用。
參考資料:
nginx 重要點
(nginx 的安裝我就不介紹了,自己按文檔安裝就行)
1.如果 nginx 已經開啟,那么可以使用如下命令控制 nginx
nginx -s signal
// 其中 signal 是如下命令:
// stop — 直接關閉 nginx
// quit — 會在處理完當前正在的請求后退出,也叫優雅關閉
// reload — 重新加載配置文件,相當於重啟
// reopen — 重新打開日志文件
2.nginx 配置文件的語法是有簡單指令和塊級指令構成的:
// 簡單指令由名字和參數組成,中間用空格分開,並以分好結尾,示例如下
root /data/www;
// 塊級指令也叫上下文,用 { 和 } 大括號包裹,末尾沒有分號,示例如下
// 其中注釋以 # 開頭
events {
worker_connections 4096; ## Default: 1024
}
注意:沒有放在任何上下文中的指令都是處在主上下文中。events 和 http 的指令是放在主上下文中,server 放在 http 中, location 放在 server 中。結構示例如下:
events {
}
http {
server {
location / {
}
}
}
3.檢測配置文件,查看配置文件的位置:
nginx -t
// 返回如下:
// nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
// nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
代理靜態資源
我們現在准備使用本機的 nginx 代理靜態資源。
1.隨便建立一個文件夾,在里面創建 index.html 和 nginx.conf。我們准備使用 nginx.conf 修改配置,然后代理 index.html。
2.在 index.html 里面寫入如下代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
hello world
</body>
</html>
3.在 nginx.conf 里面寫入如下代碼:
events {
# worker_connections 1024; ## Default: 1024
}
http {
server {
listen 8765;
location / {
root /Users/zhouyang/Documents/tencent/test/local-nginx;
}
}
}
需要注意如下3點:
-
root 那里不能使用相對路徑,因為我們是改寫 /usr/local/etc/nginx/nginx.conf,所以相對路徑的相對位置並不是當前所在的文件夾,而是 /usr/local/etc/nginx/ 文件夾。獲取當前文件夾絕對路徑的方法是:直接把此文件夾拖到 bash 里面即可。
-
如果報錯:
nginx: [emerg] "server" directive is not allowed here in xxxxxx
,意思是說 server 位置有誤,它需要被放在 http 上下文里面!! -
如果報錯:
nginx: [emerg] no "events" section in configuration
,意思是說沒有 events 上下文,這里配置文件中必須加上 events 上下文,即使里面什么指令也沒有。(就像上面我把 events 里面的內容注釋掉了一樣)
4.在 bash 里面使用如下命令修改 nginx 配置,然后重啟 nginx。
// 首先優雅退出 nginx
nginx -s quit
// 然后從選定的配置文件啟動 nginx
nginx -c /Users/zhouyang/Documents/tencent/test/local-nginx/nginx.conf
注意:第二步不能加 -t 參數寫成nginx -t -c /Users/zhouyang/Documents/tencent/test/local-nginx/nginx.conf
,因為 -t 參數只是檢查配置,並且不啟動 nginx。
5.打開 localhost:8765,即可看到 hello world。