2017-05-27 114 views
3

我已經在Arch Linux主板上提出這個問題,但沒有得到任何答案。所以我想我的運氣在這裏:nginx + gunicorn:部署多個Flask應用程序

我想在我的Arch Linux服務器上設置nginx + gunicorn來運行多個Flask應用程序。不過,我似乎沒有正確配置nginx的方法。 當我剛剛開始運行一個Flask應用程序時,一切似乎都正常。我在/etc/nginx/nginx.conf中包含了/ etc/nginx/sites-available和/ etc/nginx/sites-enabled。 我在/ etc/nginx/sites/available中創建了一個文件「flask_settings」,並將它鏈接到/ etc/nginx/sites-enabled。該文件是這樣的:

server { 
    location /{ 
      proxy_pass http://127.0.0.1:8000; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 

} 


} 

我有一個包含我的瓶的應用程序(示例應用程序,hellp.py),我與在虛擬環境中運行gunicorn一個文件夾。如果我訪問我的服務器IP我可以訪問文件和不同的路線我只要運行它使用

gunicorn hello:app 

。 現在我試着在啓用/ etc/nginx/sites-enabled的flask2中創建另一個應用程序來創建另一個文件。它看起來像這樣:

server { 
    location /hello { 
      proxy_pass http://127.0.0.1:8001; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 

} 


} 

然後我嘗試使用

gunicorn --bind 127.0.0.1:8001 hello:app 

運行其自己的虛擬環境中應用程序時,我重啓nginx的事後,我仍然能夠訪問第一個應用程序和所有但是如果我嘗試通過輸入我的服務器IP +路由器(在「/」之後)訪問另一個,nginx總是告訴我,找不到這些站點。我在這裏錯過了什麼嗎? 任何幫助是高度讚賞。 在此先感謝!

回答

0

您應該爲這兩個應用程序分別提供代理位置。 即,每個路由都有一個nginx conf文件,但有多個位置,或者每個路由可以有單獨的conf文件。

例如: h1.example.com代理的位置與端口號 h2.example.com代理到所述第二應用程序的位置所需要的地址。

+0

所以你的意思是創建一個文件並添加兩個 –

+0

是的,在一個ngnix文件服務兩個應用程序。爲每個應用傳遞代理到您運行該應用的相應端口。 [這](https://stackoverflow.com/questions/13660118/running-a-flask-app-with-nginx-and-gunicorn?rq=1)可能有幫助 –

相關問題