Проблема хостинга реагирует на приложение под-маршрута сайта - несколько сайтов один IP-адрес NGINX - PullRequest
0 голосов
/ 04 марта 2019

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

Так что у меня есть сайт, который размещен на Ubuntu AWSсервер от nginx и pm2.Моя проблема в том, что я хочу обслуживать веб-сайт на www.mysite.com, а приложение реакции на www.mywebsite.com/app.это не похоже, что это должно быть труднее всего сделать.Однако у меня были проблемы, и я не могу заставить его работать так, как мне хотелось бы. (отчасти это связано с тем, что я также хочу разместить сервер API на www.mywebsite.com/api, но это проблема после этого). Мне удалось сначала просто разместить приложение реакции на www.mysite.com сследующая конфигурация nginx:

server {
    listen 80;
    server_name 18.191.56.251;
    root /home/ubuntu/app/src;
location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_max_temp_file_size 0;
    proxy_pass http://127.0.0.1:3000/;
    proxy_redirect off;
    proxy_read_timeout 240s;
}
}

Но когда я переключаю его на суб-маршрут, изменяя конфигурацию следующим образом:

server {
    listen 80;
    server_name x.x.x.x;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_redirect off;
        proxy_set_header   X-Forwarded-Proto $scheme;

        proxy_connect_timeout       600;
        proxy_send_timeout          600;
        proxy_read_timeout          600;
        send_timeout                600;

    location /status {
        return 200;
    }

    location /app {
        proxy_pass http://127.0.0.1:3000;
    }

    location / {
        proxy_pass http://...:3011/;
    }
}

Тогда мой базовый маршрут www.mywebsite.com для статического веб-сайта работаетхорошо, но www.mywebsite.com/app не делает и «загружает» пустую страницу, но если вы проверяете, вы видите, что приложение не может загрузить некоторые ресурсы:

bundle.js:1
Failed to load resource: the server responded with a status of 404 (Not Found)
0.chunk.js:1 
Failed to load resource: the server responded with a status of 404 (Not Found)
main.chunk.js:1 
Failed to load resource: the server responded with a status of 404 (Not Found)

РЕДАКТИРОВАТЬ дополнительные исследования: Если я проверяю запрос наресурс, который я вижу, имеет URL-адрес www.mywebsite.com/static/js/XXX.js, но статическая папка - ~/app/build/static.Это проблема nginx или pm2 с размещением статических файлов?

Любая помощь приветствуется, спасибо

1 Ответ

0 голосов
/ 05 марта 2019

Так что я все равно хотел бы получить другой результат, чем этот, но я нашел обходной путь для этого, я добавил следующее после location /app:

location /static {
     proxy_pass http://127.0.0.1:3000;
}

Мне не нравится это решение, потому что, если я в конечном итогеимея статический контент как часть других проектов, он не будет работать, но каким-то образом все ресурсы для моего сайта упакованы в правильный прокси на /.так что в настоящее время все это работает.

...