Я получаю 404 при попытке связаться с моим Rest-API с помощью Nginx reverse_proxy - PullRequest
0 голосов
/ 15 июня 2019

На моем облачном сервере 8084 работает Rest-API.Когда я пытаюсь получить доступ к mysitename: 8084 / swagger-ui.html, я вижу страницу документации Api Swagger.Но когда я пытаюсь сделать это как mysitename.com/api/swagger-ui.html, я получаю ошибку 404.

Я прочитал много похожих вопросов об этой проблеме в StackOverflow, я пробовал разные решения, но могне удалось.

Вот мой конфигурационный файл nginx

server {
        listen 80;
        listen [::]:80;

        root /var/www/mysitename.com/html/;
        index index.html index.htm index.nginx-debian.html;

        server_name mysitename.com www.mysitename.com;
}

server {

    listen 443;
    server_name mysitename.com www.mysitename.com;

    ssl_certificate           /etc/letsencrypt/live/mysitename.com/cert.pem;
    ssl_certificate_key       /etc/letsencrypt/live/mysitename.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/petahr.access.log;

    location / {
      root /var/www/mysitename.com/html/;
      index index.html index.htm index.nginx-debian.html;
    }
}

server {

    listen 443;
    server_name mysitename.com www.mysitename.com;

    ssl_certificate           /etc/letsencrypt/live/mysitename.com/cert.pem;
    ssl_certificate_key       /etc/letsencrypt/live/mysitename.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    location /api/ {
      proxy_set_header        Host $host;
      proxy_pass              https://127.0.0.1:8084/;
      proxy_read_timeout      90;

      try_files $uri $uri/ =404;
    }
}

РЕДАКТИРОВАТЬ

Это nginx -T вывод

/etc/nginx/sites-available$ sudo nginx -T
nginx: [warn] conflicting server name "mysitename.com" on 0.0.0.0:443, ignored
nginx: [warn] conflicting server name "www.mysitename.com" on 0.0.0.0:443, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Буду признателен, если вы поможете мне.

1 Ответ

0 голосов
/ 16 июня 2019

Проверка конфигурации подтверждает комментарий Ричарда Смита .Просто предупреждение, что есть два серверных блока с одинаковыми listen и server_name.

1) Попробуйте перенести ваш location /api/ {} прямо под блоком location / {} второго блока сервера.

2) Удалите весь 3-й блок сервера

3) Если вы хотите перенаправить с http на https, добавьте return 301 https://$host$request_uri; прямо в конце блока вашего сервера, прослушивая порт 80.

4) Запустите nginx -T еще раз, чтобы проверить наличие ошибок.

5) Перезагрузите Nginx, если ошибок не обнаружено.

Вот предлагаемый файл конфигурации блока сервера:

server {
        listen 80;
        listen [::]:80;

        root /var/www/mysitename.com/html/;
        index index.html index.htm index.nginx-debian.html;

        server_name mysitename.com www.mysitename.com;
        return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name mysitename.com www.mysitename.com;

    ssl_certificate           /etc/letsencrypt/live/mysitename.com/cert.pem;
    ssl_certificate_key       /etc/letsencrypt/live/mysitename.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/petahr.access.log;

    location / {
      root /var/www/mysitename.com/html/;
      index index.html index.htm index.nginx-debian.html;
    }

    location /api/ {
      proxy_set_header        Host $host;
      proxy_pass              https://127.0.0.1:8084/;
      proxy_read_timeout      90;

      ## try_files $uri $uri/ =404;
    }
}

Надеюсь, это поможет!

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