使用Nginx在raspbian的端口80上运行setup vue应用程序,以及在端口8080上运行的flask后端

时间:2018-12-30 16:16:12

标签: nginx vue.js raspbian

我在以下配置下在端口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;
        }

1 个答案:

答案 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,而让/自由地服务于前端。