我在以下配置下在端口8080上运行了基于nginx安装瓶的后端
server {
listen 8080 default_server;
listen [::]:8080;
root /var/www/html;
server_name _;
location /static {
alias /var/www/html/static/;
}
location / {
try_files $uri @wsgi;
}
location @wsgi {
proxy_pass http://unix:/tmp/gunicorn.sock;
include proxy_params;
}
location ~* .(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires max;
}
}
我还设置了一个系统服务,该服务使用gunicorn通过以下方式运行flask应用程序:gunicorn --bind=unix:/tmp/gunicorn.sock --workers=4 start_backend:web_app
现在,以上内容适用于端口8080上的python flask后端,我也想在默认端口80上添加vue.js应用。 任何帮助将不胜感激!
更新
server {
listen 80 default_server;
listen [::]:80;
root /var/www/html/dist;
server_name _;
location /static {
alias /var/www/html/dist/static/;
}
location / {
root /var/www/html/dist;
try_files $uri $uri/ /index.html;
}
location /api {
root /var/www/html;
try_files $uri @wsgi;
}
location @wsgi {
proxy_pass http://unix:/tmp/gunicorn.sock;
include proxy_params;
}
答案 0 :(得分:1)
听起来像您需要添加另一个服务器块来服务前端。
server {
listen 80 default_server;
listen [::]:80;
location / {
root /path/to/dist;
try_files $uri $uri/ /index.html;
}
}
我已将此代码基于this tutorial,其中上例中的/path/to/dist
应该更改为the dist directory of the Vue.js front-end from your vue app
。
如果您已阅读本教程中的设置Nginx 部分,您会注意到它们在同一服务器块中的Flask应用程序和Vue.js位于不同URL的前面:
server {
listen 80;
server_name 123.45.67.89;
location /api {
include uwsgi_params;
uwsgi_pass unix:/home/survey/flask-vuejs-survey/backend/surveyapi.sock;
}
location / {
root /home/survey/flask-vuejs-survey/frontend/survey-spa/dist;
try_files $uri $uri/ /index.html;
}
如果该应用程序将面向互联网,则这可能是一种更好的处理方式,因为用户的互联网提供商可能阻止了8080端口的传出。使用第二种配置,所有内容都通过端口80提供。
您可能需要稍微调整vue.js
应用,以使其在/api
(或其他位置)上寻找API,而让/
自由地服务于前端。