CORS на прокси-сервере Nginx для docker контейнерного flask приложения не работает должным образом - PullRequest
0 голосов
/ 04 августа 2020

Контейнер docker работает с приложением flask, обслуживаемым с помощью gunincorn на виртуальной машине. Мне нужно установить сертификаты ssl и CORS на обратном прокси-сервере, и поэтому у меня есть nginx, чтобы направить вход в приложение flask внутри контейнера docker. Однако я получаю следующую ошибку:

enter image description here

I am using this CORS testing tool: https://medium.com/pareture/simple-local-cors-test-tool-544f108311c5 для проверки моего сервера.

Ожидаемый результат : сообщение об успешном завершении консоль.

Информация о виртуальной машине: ОС: UbuntuLts 18.04 Python: 3.6.9

Flask Информация о приложении: / status URI дает фиктивное сообщение клиенту.

/ etc / nginx / conf.d / nginx .conf файл:

server {

listen 80;
server_name http://0.0.0.0; 

add_header Access-Control-Allow-Origin "*";
add_header 'Access-Control-Allow-Credentials' 'true'; 
add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
 
location / {
            if ($request_method = 'OPTIONS') {
                    add_header 'Access-Control-Allow-Origin' '*';
                    add_header 'Access-Control-Allow-Credentials' 'true';
                    add_header 'Access-Control-Allow-Headers' 'Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';
                    add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS,PUT,DELETE,PATCH';
                    add_header 'Access-Control-Max-Age' 1728000;
                    add_header 'Content-Type' 'text/plain charset=UTF-8';
                    add_header 'Content-Length' 0;
              }    
           
            proxy_pass_header Authorization;
            proxy_pass http://0.0.0.0:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

}

/ etc / nginx / nginx .conf файл:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        # ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        # ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

Пожалуйста, предложите изменения, чтобы устранить проблему CORS, показанную на изображении.

...