Конфигурация Nginx соответствует только базовым путям, в противном случае возвращает 404.Зачем? - PullRequest
0 голосов
/ 24 января 2019

У меня есть установка капель DigitalOcean для одновременной работы с 3 веб-сайтами.Все работает точно так же, как и для базовых путей (например: www.johndoe.com/), но все, что я добавляю после косой черты, возвращает страницу 404 (например: www.johndoe.com/about).

Вотодин из файлов конфигурации 3 моих сайтов (сгенерированный certbot):

    server {
        listen 443 ssl;

        root /usr/share/nginx/holidayhomes7;

        server_name holidayhomes7.com www.holidayhomes7.com;

        location / {
                try_files $uri $uri/ =404;
                proxy_pass http://localhost:8080;
        }

        # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/holidayhomes7.com/fullchain.pem; 

        # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/holidayhomes7.com/privkey.pem; 
    }

    server {
        if ($host = www.holidayhomes7.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot


        if ($host = holidayhomes7.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot

        listen 80;
        listen [::]:80;

        server_name holidayhomes7.com www.holidayhomes7.com;
        return 404; # managed by Certbot
    }

Я пытался заменить

try_files $uri $uri/ =404;

на

try_files $uri /path_to_html_file;

на noбезуспешно.

Кстати, 3 веб-сайта являются нодовыми приложениями, и все они прекрасно работают на локальном хосте моей машины.

Я понятия не имею, почему это происходит как полный нуб во всем, что касается NGINX.Буду очень признателен за вашу помощь!

1 Ответ

0 голосов
/ 24 января 2019

Я думаю, что ваш try_files вступает во владение, и он никогда не достигает части proxy_pass.

Попробуйте это в первом server блоке из вашего примера:

location / {
    try_files $uri $uri/ @app;
}

location @app {
    # depending on what OS you use, and how you've installed Nginx
    # there may be an include here to do as well, such as:
    # include proxy_params;
    proxy_pass http://localhost:8080;
}

Это должно попытаться найти файл на сервере, соответствующий URI, и, если он не найдет его, передать запрос в NodeJS через proxy_pass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...