Я пытаюсь перенаправить корневой домен и для http и для https в nginx к тому же подкаталогу (https):
Так, например.
http://example.com -> https://example.com/subdirectory
https://example.com -> https://example.com/subdirectory
Столь простой, как это казалось мне, я изо всех сил пытаюсь достигнуть этого. Я попытался использовать изменения, переписывает, и возвратитесь 301, но всегда заканчивайте с циклом перенаправления.
Моя текущая конфигурация (порождение цикла):
server {
listen 80;
server_name example.com;
return 301 https://$server_name/subdirectory;
}
server {
listen 443 ssl spdy;
server_name example.com;
return 301 https://$server_name/subdirectory;
}
Так в основном я пытаюсь перенаправить к тому же подкаталогу на https от корневого домена, требуют ли корневой домен через http или https.
Denne konfiguration gør, hvad du vil:
server {
listen 80:
server_name example.com;
return 301 https://$server_name/subdirectory;
}
server {
listen 443;
server_name example.com;
location = / {
return 301 https://$server_name/subdirectory;
}
}
= /
-specifikationerne betyder en fuld match, så den matcher kun den nøjagtige rod-URI på den virtuelle server.
Det virker åbenbart ikke, hvis du ikke ' t ekskluder placeringsunderkatalog fra denne adfærd for ssl vhost.
server {
listen 80;
server_name example.com;
return 301 https://$server_name/subdirectory;
}
server {
listen 443 ssl spdy;
server_name example.com;
location /subdirectory {
# Your stuff
}
location = / {
return 301 https://$server_name/subdirectory;
}
}
server {
listen 80:
server_name example.com;
return 301 https://$server_name/subdirectory/;
}
server {
listen 443;
server_name example.com;
location = / {
return 301 https://$server_name/subdirectory/;
}
}
Посмотрите, как я добавил трейлинговый слэш в конце, это очень важно, иначе вы получите редиректные циклы
.Другой подход с некоторыми "хитростями" ...
server {
access_log /var/log/nginx/<DOMAIN_NAME>-access.log;
error_log /var/log/nginx/<DOMAIN_NAME>-error.log;
listen <PORT_PROXY>;
server_name <DOMAIN_NAME>;
location /<SUBDIRECTORY> {
proxy_pass http://<RESOURCE_IP>:<RESOURCE_PORT>/<SUBDIRECTORY>;
proxy_redirect off;
proxy_set_header Host $host:<PORT_PROXY>;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location = / {
return 301 https://$server_name/<SUBDIRECTORY>;
}
}
Спасибо! = D