Я новичок в веб-разработке, поэтому знаю, что делаю ошибку новичка с конфигурацией моего сервера. У меня есть сервер nginx, расположенный перед сервером Apache, который обслуживает запросы Django. У меня есть определенные представления, которые требуют входа в систему (через декоратор @login_required), и Django автоматически перенаправляет пользователя в / accounts / login /, если они получают доступ к одному из этих представлений без входа в систему. Это отлично работает с http, но с https перенаправляет меня на локальный IP-адрес Apache. Например, вместо перенаправления на https://staging.example.com/accounts/login, Меня перенаправляют на http://127.0.0.1:8080/accounts/login. Нормальные запросы HTTPS работают нормально. Я знаю, что мой nginx и / или apache настроен неправильно, но не знаю, как это сделать.
Вот часть моего файла конфигурации nginx:
server {
listen 80;
server_name staging.example.com;
root /path/to/staging/example.com/public_html/;
try_files $uri @django;
#set your default location
location @django {
proxy_pass http://127.0.0.1:8080;
}
...
}
server {
listen 443;
ssl on;
ssl_certificate /path/to/cert-staging.example.com.crt;
ssl_certificate_key /path/to/staging.example.com.key;
server_name staging.example.com;
try_files $uri @django;
#set your default location
location @django {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Forwarded-Protocol https;
}
...
}
Вот часть моего файла Apache:
NameVirtualHost *
Listen 127.0.0.1:8080
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Что ж, на это ушла целая вечность. Я изменил это в моем nginx ports.conf:
proxy_redirect off;
к этому:
proxy_redirect http://localhost:8080/ /
Меня как бы пугает то, что во всех примерах, которые я использовал, похоже, отключен proxy_redirect, но я думаю, что я сохраню его так, пока кто-то не сможет дать лучший ответ.