У меня есть 3 домена, работающих на сервере nginx с ssl
domain.pw domain.info domain.mobi
У меня включен sni, и я использую виртуальный хост для каждого сайта.
записи хоста для сайта все такие
A Record: @ <IP ADDRESS> 1800
A Record: www <IP ADDRESS> 1800
все файлы conf похожи на это. и выполняют свою работу так, как задумано, за исключением одной проблемы (я расскажу об этом чуть позже, теперь я объясню файл конфигурации, который вы видите ниже)
шаг 1 server_name
(первый комментарий) перенаправляет трафик с www на не-www
шаг 2 server_name
перенаправляет трафик http: // на порт 80 на https: //
шаг 3 server_name
это фактический код сервера для обслуживания страниц через ssl с порта 443.
log_format www.domain.pw '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
#redirects www traffic to domain.pw
server {
server_name www.domain.pw;
rewrite ^(.*) https://domain.pw$1 permanent;
}
#redirect http traffic to https
server {
listen 80;
server_name domain.pw;
return 301 https://$server_name$request_uri;
}
#server and ssl configuration.
server {
listen 443;
server_name domain.pw;
index index.php;
root /home/wwwroot/www.domain.pw;
ssl on;
#enables SSLv3/TLSv1, but not SSLv2 which is weak and should no longer be used.
ssl_protocols SSLv3 TLSv1.2;
#Disables all weak ciphers
ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM;
ssl_certificate /usr/local/nginx/ssl/domains/domain.pw.crt;
ssl_certificate_key /usr/local/nginx/ssl/domains/domain.pw.pem;
include other.conf;
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
access_log /home/wwwlogs/www.domain.pw.log www.domain.pw;
error_page 404 = /access_denied.php;
error_page 403 = /access_denied.php;
}
эта проблема
www.domain.info
перенаправляет на https://domain.info
www.domain.mobi
перенаправляет на https://domain.mobi
www.domain.pw
перенаправляет на https://domain.info
<<< Дох! wtf ??? >>>
Заметка: эта проблема существует только с www
перенаправление отлично работает без него.
пожалуйста, помогите, эта штука меня беспокоит в течение нескольких дней, я перепутал свои файлы конфигурации, перезагрузил свой сервер, перевыпустил свои сертификаты ssl, и что бы это ни было, это всегда приводит к ошибке. Зачем?
Ваше перенаправление HTTP на HTTPS тонко неверно:
return 301 https://$server_name$request_uri;
Это использует имя сервера, определенное в server
блок, что, вероятно, не то, что вам нужно, особенно когда вы используете один server
блокировка перенаправления нескольких доменов.
Вместо этого используйте:
return 301 https://$http_host$request_uri;
Который будет использовать домен, предоставленный клиентом.