Обрабатывать аналогичное место с различными блоками - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть приложение реакции, которое я хотел бы показать для определенного пути. Аналогичный путь используется для серверной части. Это устаревшее приложение, и другие статические файлы отображаются с использованием другой конечной точки.

Я не могу показать содержимое соответствующим образом. Я либо показываю старые файлы, либо повреждаю аналогичный путь, либо NGINX добавляет infinity /index.html в конец пути.

Если звучит запутанно, то, что я написал, может быть, поможет иллюстрация ниже:

location / -> leave uwsgi to handle the requests
location /static/ -> serve static folder
location /request/ -> serve new react app
location /request_auth/ -> serve new react app
location /request_auth/token... -> leave uwsgi to handle the requests

Это то, что у меня сейчас и не работает!

server {
    listen       80;
    server_name  myapp.com;

    root /var/www/myapp/static/;

    location / {
        uwsgi_pass unix:///var/www/myapp/uwsgi/uwsgi.sock;
        include uwsgi_params;
        uwsgi_param HTTPS on;
    }

    # I think I can remove this block...
    location ^~ /static/ {
        alias /var/www/myapp/static/;
    }

    location ^~ /request/ {
        alias /var/www/myapp/reactstatic/;
    }

    # from down here it is not working properly. I've tried using
    # location =/request_auth/
    # location /request_auth/ 
    # and other variations in the other block as well. All unsuccessful 
    location ^~ /request_auth/ {
        alias /var/www/myapp/reactstatic/;
    }

    location ~^/request_auth/[a-zA-Z0-9]+ {
        uwsgi_pass unix:///var/www/myapp/uwsgi/uwsgi.sock;
        include uwsgi_params;
        uwsgi_param HTTPS on;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

1 Ответ

0 голосов
/ 25 апреля 2019

Оказывается, я получаю странные перенаправления. Кроме того, в моем приложении реакции была статическая папка, и второй uwsgi пытался справиться с этим.

Это то, что я сделал, и это работает, но я уверен, что есть лучшее решение.

server {
    listen       80;
    server_name  myapp.com;

    root /var/www/myapp/static/;

    location / {
        uwsgi_pass unix:///var/www/myapp/uwsgi/uwsgi.sock;
        include uwsgi_params;
        uwsgi_param HTTPS on;
    }

    # I think I can remove this block...
    location ^~ /static/ {
        alias /var/www/myapp/static/;
    }

    location ^~ /request/ {
        alias /var/www/myapp/reactstatic/;
    }
    location ^~ /request/ {
        alias /var/www/myapp/reactstatic/static;
    }

    location ^~ /request_auth/ {
        alias /var/www/myapp/reactstatic/;
    }
    location ^~ /request_auth/ {
        alias /var/www/myapp/reactstatic/static;
    }

    location ~^/request_auth/[a-zA-Z0-9]+ {
        uwsgi_pass unix:///var/www/myapp/uwsgi/uwsgi.sock;
        include uwsgi_params;
        uwsgi_param HTTPS on;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
...