安裝 nginx 併為 uWSGI 設定它

現在我們要安裝 nginx 來為我們的應用程式提供服務。

sudo apt-get install nginx  # on debian/ubuntu

然後我們為我們的網站建立配置

cd /etc/nginx/site-available  # go to the configuration for available sites
# create a file flaskconfig with your favourite editor

flaskconfig

server {
    listen 80;
    server_name localhost;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/flask.sock;
    }
}

這告訴 nginx 監聽埠 80(預設為 http)並在根路徑(/)上提供服務。在那裡,我們告訴 nginx 簡單地充當代理並將每個請求傳遞給位於/tmp/的名為 flask.sock 的套接字。

讓我們啟用該網站:

cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/flaskconfig .

如果啟用,你可能希望刪除預設配置:

# inside /etc/sites-enabled
sudo rm default

然後重啟 nginx:

sudo service nginx restart

將瀏覽器指向 localhost,你將看到錯誤:502 Bad Gateway

這意味著 nginx 已啟動並正常工作,但缺少套接字。所以我們建立它。

回到你的 uwsgi.ini 檔案並開啟它。然後追加這些行:

socket = /tmp/flask.sock
chmod-socket = 666

第一行告訴 uwsgi 在給定位置建立一個套接字。套接字將用於接收請求併發迴響應。在最後一行中,我們允許其他使用者(包括 nginx)能夠從該套接字讀取和寫入。

uwsgi --ini uwsgi.ini 再次啟動 uwsgi。現在再次將瀏覽器指向 localhost,你將再次看到 Hello uWSGI 問候語。

請注意,你仍然可以在 localhost:5000 上看到響應,因為 uWSGI 現在通過 http 套接字為應用程式提供服務。所以讓我們禁用 ini 檔案中的 http 選項

http = :5000  # <-- remove this line and restart uwsgi

現在應用程式只能從 nginx 訪問(或直接讀取該套接字:))。