Nginx перенаправить только указанные c пути сервера с http на https - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу перенаправить пути с http на https следующим образом:

У меня есть файл конфигурации:

worker_processes  1;


events {
    worker_connections  1024;
}


http {

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

        server_name localhost;

        return 301 https://$host$request_uri;
}

# HTTPS server
server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;     

        ssl_certificate certs/myservice.crt;
        ssl_certificate_key certs/myservice.key;

        server_name myservice.com localhost;

        location /api/ {

                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass https://localhost:55555/api/;

                client_max_body_size 500G;

                proxy_connect_timeout       300;
                proxy_send_timeout          300;
                proxy_read_timeout         3600;
                send_timeout                300;

        }

        location / {

                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;

                proxy_pass http://localhost:80/;

                client_max_body_size 500G;

                proxy_connect_timeout       300;
                proxy_send_timeout          300;
                proxy_read_timeout         3600;
                send_timeout                300;

        }
        location ~ /\.ht {
                deny all;
        }
}
}

Когда я попытался с этим, второе требование было выполнено. Но первое сохранение http://localhost: 80 / тоже не удается. Излишне перенаправляется как https://localhost.

Короче говоря, nginx перенаправляет все HTTP-запросы, поступающие на порт 80 локального хоста, на HTTPS.

I также попытался удалить раздел location / {} из второго блока сервера.

Затем попытался указать блок первого сервера как:

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

        server_name localhost;

        location / {
            proxy_pass http://localhost:80/
        }

        location /api/ {
            return 301 https://$host$request_uri;
        }
}

Оба они не работали.

Как правильно перенаправить только указанные c пути сервера с http на https в Nginx?

1 Ответ

0 голосов
/ 28 апреля 2020

Этот раздел во втором блоке сервера не будет работать. Потому что он снова перенаправляет на https.

location / {

                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;

                proxy_pass http://localhost:80/;

                client_max_body_size 500G;

                proxy_connect_timeout       300;
                proxy_send_timeout          300;
                proxy_read_timeout         3600;
                send_timeout                300;

        }

. Таким образом, приложение подвергается воздействию другого хост-порта, отличного от 80, скажем, 88. Затем изменил этот URL-адрес прокси-сервера на:

 proxy_pass http://localhost:88/;

Теперь это отлично работает.

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