Nginx / uWSGI / Python 之關聯#1 : Nginx篇

Simon Chu
Bucketing
Published in
5 min readFeb 6, 2021

Nginx:

Nginx(發音同「engine X」)是非同步框架的網頁伺服器,也可以用作反向代理、負載平衡器和HTTP快取。

Nginx安裝:

Redhat / CentOS
yum install nginx
Ubuntu / Debian
apt-get update
apt-get install nginx
[官方說明]

為何使用 Nginx ?

  1. 動靜分離
  2. 負載均衡
  3. 正向/反向代理
  4. 自由的BSD授權條款 (因為是免費且可以用於商業化產品)

甚麼是「反向代理」?

反向代理(Reverse Proxy)與一般訪問流程相比,使用反向代理後,直接收到請求的服務器是代理伺服器,然後將請求轉發給內部網絡上真正進行處理的伺服器,得到的結果返回給客戶端。反向代理隱藏了真實的伺服器,為伺服器收發請求,使真實伺服器對客戶端不可見。一般在處理跨域請求的時候比較常用,現在基本上所有的大型網站都設置了反向代理。

反向代理
正向代理

常修改之檔案:

  • /etc/nginx/conf.d/ 資料夾: 是進行子配置的配置項存放處
  • /etc/nginx/nginx.conf: 主配置文件會默認把文件夾中所有子配置項都引入
  • /usr/share/nginx/html/ 資料夾: 通常靜態文件都放在此資料夾,也可以根據你的習慣放其他地方

nginx.conf 簡介:

main # 全局配置,對全局生效
├── events # 配置影響 Nginx 服務器或與用戶的網絡連接
├── http # 配置代理、緩存、日誌定義等大多數功能和第三方模組的配置
│ ├── upstream # 配置後端伺服器具體地址,是負載平衡配置不可或缺的部分
│ ├── server # 配置虛擬主機的相關參數,一個 http 中可以有多個 server 區塊
│ ├── server
│ │ ├── location # server 可以包含多個 location 區塊
│ │ ├── location
│ │ └── …
│ └── …
└── …

配置範例:

:~$ vim /etc/nginx/conf.d/flask.confserver{
listen 80;
# 防止中文文件名亂碼
charset utf-8;
# server 靜態檔案位置
root /var/www;
server_name example.com;
location ~ /home {
# 反向代理
proxy_pass http://127.0.0.1:8080;
}
location / {
include uwsgi_params;
# 需對應到 uwsgi 所設定的 socket 檔案位置
uwsgi_pass unix:/srv/flask.sock;
}
}

詳細 config 設定可察看[官方網站]說明。

Nginx 常用指令:

# 重新載入配置文件,可即時重啟
nginx -s reload
# 重啟Nginx
nginx -s reopen
# 快速關閉
nginx -s stop
# 等待工作進程處理完成後關閉
nginx -s quit
# 查看當前 Nginx 的配置
nginx -T
# 檢查配置是否有問題,如果已經在配置目錄,則不需要-c
nginx -t -c <配置路徑>

也可使用 Linux 中的 systemctl 來控制 nginx

# 啟動 Nginx
systemctl start nginx
# 停止 Nginx
systemctl stop nginx
# 重啟 Nginx
systemctl restart nginx
# 重新載入 Nginx,用於修改配置後
systemctl reload nginx
# 設置開機啟動 Nginx
systemctl enable nginx
# 關閉開機啟動 Nginx
systemctl disable nginx
# 查看 Nginx 運行狀態
systemctl status nginx

參考:

nginx

--

--