Как сделать редирект с https на https в nginx?

sh00r00p
На сайте с 31.01.2012
Offline
38
1677

Всем доброго дня!

Ситуация не стандартная.

Есть VDS сервер, на нем стоит nginx + на нем на одном IP делегировано 2 домена.

К примеру:

1) domen-osnovnoi.ru

2) domen-zerkalo.ru (покупался специально для того чтобы делать с него редирект на основной домен)

На днях на domen-osnovnoi.ru установил сертификат ssl от Comodo

Максимально настроил все редиректы:

примеры:

1) с http://domen-osnovnoi.ru редиректится на https://domen-osnovnoi.ru
2) c http://www.domen-osnovnoi.ru редиректится на https://domen-osnovnoi.ru
3) с https://www.domen-osnovnoi.ru редиректится на https://domen-osnovnoi.ru
4) с http://domen-zerkalo.ru редиректится на https://domen-osnovnoi.ru
5) с http://www.domen-zerkalo.ru редиректится на https://domen-osnovnoi.ru

6) с https://domen-zerkalo.ru не редиктится! с него также доступен сайт
7) с https://www.domen-zerkalo.ru не редиктится! с него также доступен сайт

не понимаю как настроить 2 последних редиректа. Помогите пожалуйста.

Конфиг:

server {

server_name domen-osnovnoi.ru www.domen-osnovnoi.ru;

rewrite ^/(.*)$ https://domen-osnovnoi.ru/$1 permanent;

charset off;

disable_symlinks if_not_owner from=$root_path;

index index.php;

root $root_path;

expires 1d;

set $root_path /var/www/admin/data/www/domen-osnovnoi.ru/public_html;

set $OPEN_BASEDIR /var/www/admin/data/;

set $SENDMAIL_PATH "sendmail_path=/usr/sbin/sendmail -t -i -f admin@domen-osnovnoi.ru";

ssi on;

access_log /var/www/httpd-logs/domen-osnovnoi.ru.access.log ;

error_log /var/www/httpd-logs/domen-osnovnoi.ru.error.log notice;

include /etc/nginx/vhosts-includes/*.conf;

location /admin/ {

auth_basic "Admin Zone";

auth_basic_user_file /var/www/admin/data/www/domen-osnovnoi.ru/public_html/admin/.htpasswd;

location ~ [^/]\.ph(p\d*|tml)$ {

try_files /does_not_exists @php;

}

}

error_page 401 /index.php?bff=errors&errno=401;

error_page 403 /index.php?bff=errors&errno=403;

error_page 404 /index.php?bff=errors&errno=404;

error_page 500 /index.php?bff=errors&errno=500;

error_page 501 /index.php?bff=errors&errno=501;

error_page 502 /index.php?bff=errors&errno=502;

error_page 504 /index.php?bff=errors&errno=504;

# www to non-www

if ($host ~* ^www\.(.*))

{

set $host_without_www $1;

rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;

}

location = /robots.txt { access_log off; log_not_found off; }

location ~ /\. { access_log off; log_not_found off; deny all; }

location ~ ~$ { access_log off; log_not_found off; deny all; }

location ~* \.(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc)$ {

add_header Pragma "public";

add_header Cache-Control "public, must-revalidate, proxy-revalidate";

access_log off;

log_not_found off;

expires 360d;

}

location ~* ^/(files|styles|css|img|js|rss|seo)/.*\.(php|php2|php3|php4|php5)$

{

deny all;

}

# .htaccess .htpassword .git .svn

location ~ /\. {

deny all;

access_log off;

log_not_found off;

}

# anonym & bots

if ($request_uri ~ " " ) { return 404; }

if ($SENDMAIL_PATH = ''){

set $SENDMAIL_PATH "sendmail_path=/usr/sbin/sendmail -t -i";

}

location ~* \.php$ {

try_files $uri =404;

fastcgi_pass unix:/var/www/php-fpm/admin.sock;

fastcgi_index index.php;

fastcgi_split_path_info ^(.+\.php)(.*)$;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$OPEN_BASEDIR:/tmp/\n$SENDMAIL_PATH";

include fastcgi_params;

}

location / {

try_files $uri $uri/ @rewrites;

}

location @rewrites {

rewrite ^ /index.php last;

}

listen 178.00.000.00:80;

}

server {

server_name domen-osnovnoi.ru www.domen-osnovnoi.ru;

charset off;

disable_symlinks if_not_owner from=$root_path;

index index.php;

root $root_path;

expires 1d;

set $root_path /var/www/admin/data/www/domen-osnovnoi.ru/public_html;

set $OPEN_BASEDIR /var/www/admin/data/;

set $SENDMAIL_PATH "sendmail_path=/usr/sbin/sendmail -t -i -f admin@domen-osnovnoi.ru";

ssi on;

access_log /var/www/httpd-logs/domen-osnovnoi.ru.access.log ;

error_log /var/www/httpd-logs/domen-osnovnoi.ru.error.log notice;

include /etc/nginx/vhosts-includes/*.conf;

location /admin/ {

auth_basic "Admin Zone";

auth_basic_user_file /var/www/admin/data/www/domen-osnovnoi.ru/public_html/admin/.htpasswd;

location ~ [^/]\.ph(p\d*|tml)$ {

try_files /does_not_exists @php;

}

}

error_page 401 /index.php?bff=errors&errno=401;

error_page 403 /index.php?bff=errors&errno=403;

error_page 404 /index.php?bff=errors&errno=404;

error_page 500 /index.php?bff=errors&errno=500;

error_page 501 /index.php?bff=errors&errno=501;

error_page 502 /index.php?bff=errors&errno=502;

error_page 504 /index.php?bff=errors&errno=504;

# www to non-www

if ($host ~* ^www\.(.*))

{

set $host_without_www $1;

rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;

}

location = /robots.txt { access_log off; log_not_found off; }

location ~ /\. { access_log off; log_not_found off; deny all; }

location ~ ~$ { access_log off; log_not_found off; deny all; }

location ~* \.(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc)$ {

add_header Pragma "public";

add_header Cache-Control "public, must-revalidate, proxy-revalidate";

access_log off;

log_not_found off;

expires 360d;

}

location ~* ^/(files|styles|css|img|js|rss|seo)/.*\.(php|php2|php3|php4|php5)$

{

deny all;

}

# .htaccess .htpassword .git .svn

location ~ /\. {

deny all;

access_log off;

log_not_found off;

}

# anonym & bots

if ($request_uri ~ " " ) { return 404; }

if ($SENDMAIL_PATH = ''){

set $SENDMAIL_PATH "sendmail_path=/usr/sbin/sendmail -t -i";

}

location ~* \.php$ {

try_files $uri =404;

fastcgi_pass unix:/var/www/php-fpm/admin.sock;

fastcgi_index index.php;

fastcgi_split_path_info ^(.+\.php)(.*)$;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PHP_ADMIN_VALUE "open_basedir=$OPEN_BASEDIR:/tmp/\n$SENDMAIL_PATH";

include fastcgi_params;

}

location / {

try_files $uri $uri/ @rewrites;

}

location @rewrites {

rewrite ^ /index.php last;

}

listen 178.00.000.00:443;

ssl on;

ssl_certificate /var/www/httpd-cert/admin/domen-osnovnoi.ru-2000000.crtca;

ssl_certificate_key /var/www/httpd-cert/admin/domen-osnovnoi.ru-2000000.key;

}

server {

listen 80;

server_name domen-zerkalo.ru www.domen-zerkalo.ru;

rewrite ^ $scheme://domen-osnovnoi.ru$request_uri? permanent;

}

server {

listen 443;

server_name domen-zerkalo.ru www.domen-zerkalo.ru;

rewrite ^ $scheme://domen-osnovnoi.ru$request_uri? permanent;

}

Я ВКонтакте (https://vk.com/dluzhaev) Создание сайтов, интернет магазинов.
S
На сайте с 02.05.2014
Offline
61
#1
sh00r00p:
На днях на domen-osnovnoi.ru установил сертификат ssl от Comodo
6) с https://domen-zerkalo.ru не редиктится! с него также доступен сайт
7) с https://www.domen-zerkalo.ru не редиктится! с него также доступен сайт

А для domen-zerkalo.ru сертификаты есть? Если нет, то можно использовать сертификат от основго домена, но браузер будет ругаться.

А лучше вообще забить на https домена зеркала.

Если сертификаты есть, или решили использовать другие сертификаты, то нужно заменить это:

sh00r00p:
server {
listen 443;
server_name domen-zerkalo.ru www.domen-zerkalo.ru;
rewrite ^ $scheme://domen-osnovnoi.ru$request_uri? permanent;
}

на это, исправив выделенные на свои значения:

server {

listen 178.00.000.00:443 ssl;
ssl_certificate /var/www/httpd-cert/admin/domen-zerkalo.ru-2000000.crtca;
ssl_certificate_key /var/www/httpd-cert/admin/domen-zerkalo.ru-2000000.key;
server_name domen-zerkalo.ru www.domen-zerkalo.ru;
return 301 https://domen-osnovnoi.ru$request_uri;
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий