Мое приложение использует Flask-Socketio, Flask и nginx. Я прочитал в сообщении, что вся обработка HTTP-HTTPS должна выполняться на уровне веб-сервера, а не на уровне сервера приложений. Я использовал атрибут rewrite
для перенаправления всех HTTP-запросов как HTTPS-запросов. Это успешно работает со статическими страницами. Однако, когда я пытаюсь загрузить динамический контент, я получаю сообщение об ошибке The page at 'https://localhost/myLoc' was loaded over HTTPS, but displayed insecure content from 'http://localhost/myLoc/more/paths?t=1390397': this content should also be loaded over HTTPS.
.
Далее я также получаю эту ошибку XMLHttpRequest cannot load http://localhost/myLoc/more/paths?t=1390397. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost' is therefore not allowed access.
Мой файл nginx.conf выглядит так
server {
server {
listen 80;
server_name _;
rewrite ^ https://$host$request_uri? permanent;
}
server {
gzip on;
ssl on;
listen 443 ssl;
server_name *.mydomain.com;
ssl_certificate /path/to/nginx/ssl/nginx.crt;
ssl_certificate_key /path/to/nginx/ssl/nginx.key;
location /myLoc {
proxy_pass http://localhost:9001/myLoc;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Пожалуйста помоги. Должен ли Flask-SocketIO также содержать пути к сертификату и ключу?
http://localhost/myLoc/more/paths?t=1390397
, когда он должен быть относительным (без домена, например,/myLoc/more/paths?t=1390397
) или относительно протокола (без схемы, например,//localhost/myLoc/more/paths?t=1390397
); в идеале это должно быть сделано с использованиемurl_for
вместо жестко закодированного. Вам также может потребоваться установить заголовокX-Forwaded-Proto
в блоке местоположения и добавить промежуточное ПОProxyFix
на этот ответ< /а>. - person jonafato   schedule 06.11.2014