Как правильно настроить NGNIX для SSL для приложения flask с помощью waitress

#nginx #nginx-reverse-proxy #waitress

#nginx #nginx-обратный прокси #официантка

Вопрос:

У меня есть простое приложение flask, которое я использую waitress / nginx для обслуживания / размещения

эти правила работают должным образом с SSL

 server {
    listen 443 ssl;
    listen [::]:443 ssl;
    include snippets/number2.conf;
    include snippets/ssl-params.conf;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name https://exanple.com;
        location / {

            proxy_pass http://example.com:5000/;
            proxy_set_header X-Real-IP $remote_addr;


        }

}


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

    server_name domain;

    return 302 https://$server_name$request_uri;
}
  

Однако они не работают так, как ожидалось, то же приложение с waitress / nginx. Обратите внимание, что на этом сервере также запущено другое приложение на порту 8069.

     server {
    
        listen 443 ssl;
        listen [::]:443 ssl;
        include snippets/self-signed.conf;
        include snippets/ssl-params.conf;
    
    
           
    
            root /var/www/html;
        
    
            server_name ip.adress;
            rewrite ^/$ https://ip.adress;
    
    location / {
            proxy_pass http://ip.adress:8069;
            }
    
    
    }
    
    server {
        listen 80;
        listen [::]:80;
    
        server_name ip.adress;
            return 301 https://ip.adress$request_uri;
    
    
    }



server {
    listen 443 ssl;
    listen [::]:443 ssl;
    include snippets/number2.conf;
    include snippets/ssl-params.conf;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name https:/example.com;
        location / {

            proxy_pass http://example.com:5000/;
            proxy_set_header X-Real-IP $remote_addr;


        }

}


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

    server_name domain.com;

    return 302 https://$server_name$request_uri;
}
  

Пробовал несколько комбинаций правил сервера, но на данный момент я заблудился.

Ответ №1:

Была ли приведенная ниже proxy_pass http://ip.adress:5000; основная важная строка в location / , чтобы все заработало?

Комментарии:

1. Да и настройка url_scheme в приложении flask

Ответ №2:

Я смог с этим разобраться. Для тех, у кого еще возникли проблемы, мне пришлось использовать обратный прокси. Я listened to port 8001 и used a proxy port 5000 с header of Host $host . Я также добавил url_scheme='https' в приложение flask.

https://docs.pylonsproject.org/projects/waitress/en/stable/reverse-proxy.html

     server {

    listen ip.adress:8001 ssl;
    include snippets/ssl-self.conf;
    include snippets/ssl-params.conf;



        root /var/www/html;



        index index.html index.htm index.nginx-debian.html;

        server_name ip.adress;

location / {
        proxy_pass http://ip.adress:5000;
        proxy_set_header        Host $host;

        }
}