Я просмотрел переполнение стека, но каждый раз, когда я нахожу кусок кода, который, как говорят люди, работает, он, к сожалению, не работает для меня.Nginx - перенаправление без ssl & non www to ssl & www
Я использую Laravel on Forge и пытаюсь перенаправить не www & non ssl в ssl + www.
Это работает. Однако он не перенаправляет https://example.com
. Он перенаправляет все остальные: example.com or www.example.com or http://example.com or http://www.example
- https://www.example.com
кроме одного упомянутого выше.
Я понятия не имею, почему это происходит.
Вот мой Nginx файл:
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 80;
server_name xxx.xxx.xxx.xxx;
return 301 $scheme://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
root /home/forge/example.com/public;
# FORGE SSL (DO NOT REMOVE!)
ssl_certificate /etc/nginx/ssl/example.com/21671/server.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/21671/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
index index.html index.htm index.php;
charset utf-8;
location/{
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/example.com-error.log error;
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
#cache:
location ~* \.(css|js|gif|jpe?g|png)$ {
expires 168h;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
}
Я получаю сервера не найдена ошибка –
Я отредактировал мой ответ. Я думаю, что сейчас хорошо. – Alex
По-прежнему та же проблема. Chrome показывает это: 'DNS_PROBE_FINISHED_NXDOMAIN'. Может быть, это потому, что я должен «слушать 443» в моем файле конфигурации? Твой и другой, который у меня уже был? –