У меня есть этот клиентский сервер, на котором я хотел бы настроить ssl на сайте вроде этого app..net
На сервере запущен ubunto и он написан на laravel / php.
server {
server_name <domain>.net www.<domain>.net;
return 301 https://app.<domain>.net$request_uri;
}
server {
listen 443 ssl;
server_name app.<domain>.net;
root /home/<domain>/www/site/public;
location / {
index index.php;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /index.php;
location ~ \.php? {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.<domain>.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
ssl on;
ssl_certificate /etc/nginx/ssl/<domain>/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/<domain>/<domain>.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-R$
ssl_prefer_server_ciphers on;
access_log /home/<domain>/logs/access.log;
error_log /home/<domain>/logs/error.log;
}
Это мой файл конфигурации для моего конкретного сайта. Прямо сейчас, когда я захожу в app..net, я попадаю на www..com, я понятия не имею, в чем проблема.
РЕДАКТИРОВАТЬ:
Если я изменю файл конфигурации на следующее:
server {
server_name <domain>.net www.<domain>.net;
return 301 http://<domain>.net$request_uri;
}
server {
server_name app.<domain>.net;
root /home/<domain>/www/site/public;
location / {
index index.php;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /index.php;
location ~ \.php? {
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.<domain>.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
ssl on;
ssl_certificate /etc/nginx/ssl/<domain>/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/<domain>/<domain>.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-R$ ssl_prefer_server_ciphers on;
access_log /home/<domain>/logs/access.log;
error_log /home/<domain>/logs/error.log;
}
Затем я оказываюсь на правой странице, но без https
Этот блок сервера из вашей отредактированной конфигурации:
server {
server_name <domain>.net www.<domain>.net;
return 301 http://<domain>.net$request_uri;
}
не имеет смысла и просто создает бесконечный цикл перенаправления: с http: //
обратно на http: // <домен> .net /
.
Если основной адрес - https: // app ..net / и вы хотите, чтобы пользователи перенаправлялись туда (и всегда с https), просто напишите:
server {
server_name <domain>.net www.<domain>.net app.<domain>.net;
return 301 https://app.<domain>.net/;
}
server {
server_name app.<domain>.net;
listen 443;
ssl on;
...
}
Если в конфигурации nginx нет других блоков {} серверов, первый черный можно записать как
server {
server_name _;
listen 80 default_server;
return 301 https://app.<domain>.net/;
}
Также проверьте, как настроено приложение PHP - может быть какое-то перенаправление, отправленное приложением.
Насколько я понимаю, ваш домен не имеет перенаправления с HTTP на HTTPS.
Это объясняет, что без прослушивания порта 80 для этого домена NGINX вернется к значениям по умолчанию сервер, который, как я полагаю, является вашим основным доменом.
В любом случае, если вам нужен автоматический HTTPS в app..net, вы должны добавить app..net в первый блок, который перенаправляет HTTP на HTTPS.