Nginx куки не запрашиваются между блоками сервера - PullRequest
0 голосов
/ 07 марта 2020

У меня проблема с nginx и запросами XHR, передающими файлы cookie между блоками сервера. Я пытался использовать балансировщик нагрузки CloudFlare на трех nginx серверах, обеспечивающих доступ к интерфейсу, а также доступ через API (через XHR) к нашему приложению.

Если оба интерфейса и URL-адреса API указаны в имени_сервера тот же блок сервера, cflb cook ie правильно передается в запросах, и они направляются на один и тот же исходный сервер. Если интерфейсный интерфейс и URL-адреса API существуют в разных блоках сервера в конфигурации, cook ie не отправляется с запросами, и балансировщик нагрузки распределяет последующие вызовы API на альтернативный сервер, на котором сеанс не аутентифицирован. Я использую несколько блоков серверов из-за разных сертификатов SSL, используемых для разных доменов. Я подтвердил, что если я использую поддомен в том же блоке сервера, повар ie будет отправлен правильно, но если я переместлю поддомен в свой собственный блок сервера со всеми остальными конфигурациями, идентичными, то повар ie не сможет отправить.

Публикация (очищенная) nginx Конфигурация блока сервера ниже. Почему это может быть неудачным и что я могу сделать, чтобы решить это? Я пробовал ряд вещей, связанных с CORS, в том числе: https://gist.github.com/Stanback/7145487 все безуспешно.

Nginx блок сервера:

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

        root /var/www/domain-name;
        index index.html index.php;

        server_name my.domain-name.com.au my1.domain-name.com.au demo.domain-name.com.au api1.domain-name.com.au api2.domain-name.com.au api3.domain-name.com.au;

        ssl_certificate "/etc/pki/tls/certs/domain-name.com.au.crt";
        ssl_certificate_key "/etc/pki/tls/private/domain-name.com.au.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_ciphers EECDH+AESGCM:EDH+AESGCM:EECDH:EDH:!MD5:!RC4:!LOW:!MEDIUM:!CAMELLIA:!ECDSA:!DES:!DSS:!3DES:!NULL;
        ssl_prefer_server_ciphers on;

        # set expiration of assets to MAX for caching
        location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
                expires max;
                log_not_found off;
        }

        location ~* \.(eot|css|otf|ttf|woff)$ {
                add_header Access-Control-Allow-Origin *;
        }

        location /api {
                try_files $uri $uri/ /api/index.php?/$request_uri;
        }

    location ~ \.php$ {
        # if the file is not there show a error : mynonexistingpage.php -> 404
        try_files $uri =404;
        # pass to the php-fpm server
        fastcgi_pass 127.0.0.1:9000;
        # also for fastcgi try index.php
        fastcgi_index index.php;
        # some tweaking
        fastcgi_param CI_ENV production;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        include fastcgi_params;
    }

        location / {
                try_files $uri $uri/ /index.php =404;
                proxy_cookie_path / "/; HTTPOnly; Secure";
        }

        error_page 404 /404/index.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

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