我在我的 VPS 上安装了 Let's Encrypt。在此之前,页面正常工作,但之后 - 域名显示“欢迎使用 nginx”页面。
我只编辑了默认 通过添加 SSL 声明
server {
listen 80 default_server;
listen [::]:80 default_server;
# listen 443;
root /var/www/html/public;
index index.php index.html index.htm;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
return 301 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-vrs-factory.net.conf;
include snippets/ssl-params.conf;
}
出了什么问题?Nginx 已重新启动。
答案1
如果您使用两个不同的服务器块,则必须对两者进行配置。
如果您希望 http 和 https 的配置(根目录等)相同,则可以只使用一个服务器块,如下所示:
server {
listen 80;
listen 443 default_server ssl; // example, set it up as you like.
# config }
我邀请你检查一下官方文件
答案2
甚至更好你可能正在尝试做什么首先根据以下return 301
行:现在您有了可用的证书,您可以为 TLS 配置现有的服务器块,然后创建一个新的服务器块,将 HTTP 重定向到 HTTPS:
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-vrs-factory.net.conf;
include snippets/ssl-params.conf;
server_name example.com;
# Added this to prevent man in the middle attacks
add_header Strict-Transport-Security "max-age=31536000";
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
}
为什么我建议使用return 301
重定向并添加Strict-Transport-Security
标头,请阅读有关实施 TLS 的充分理由:否则浏览器将不知道您已配置 TLS,混合内容可能会导致问题等。