server {
listen 80 default_server;
listen [::]:80 default_server;
server_name server_domain_or_IP;
return 302 https://$server_name$request_uri;
}
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
. . .
完成后保存并关闭文件.
如果您希望或需要同时允许加密和未加密的内容,则必须以不同的方式配置Nginx. 如果可以避免,通常不建议这样做,但在某些情况下可能有必要. 基本上,我们只是将两个单独的服务器块压缩为一个块,然后删除重定向:

server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name server_domain_or_IP;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
. . .
完成后保存并关闭文件.
如果ufw启用了防火墙,则必须根据本教程准备中的建议调整设置以允许SSL通信. 幸运的是,ufw在安装过程中注册了一些Nginx配置文件.
我们可以通过输入以下内容来查看可用的配置文件
sudo ufw app list
您应该看到以下列表:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
您可以输入以下内容查看当前设置:
sudo ufw status
可能看起来像这样,这意味着只允许HTTP流量进入Web服务器:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
要进一步允许HTTPS流量,我们可以允许“ Nginx Full”配置文件,然后删除冗余的“ Nginx HTTP”配置文件配额:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
您的状态现在应如下所示:
sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
现在我们已经进行了更改并调整了防火墙,我们可以重新启动Nginx来实现我们的新更改.
首先,我们应该检查以确保文件中没有语法错误. 我们可以通过输入以下内容来做到这一点:
sudo nginx -t
如果一切顺利,您将获得以下结果:
Outputnginx: [warn] "ssl_stapling" ignored, issuer certificate not found
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

开始之前请注意警告. 如前所述,由于我们的自签名证书不能使用SSL绑定,因此此特定设置将发出警告. 这是预料之中的,我们的服务器仍可以正确加密连接.
如果输出与以上匹配,则配置文件中没有语法错误. 我们可以安全地重启Nginx来实现我们的更改:
sudo systemctl restart nginx
现在,我们准备测试SSL服务器.
打开Web浏览器,然后在地址栏中输入服务器的域名或IP:
https://server_domain_or_IP
由于我们创建的证书不是由您的一个浏览器的受信任证书颁发机构签名的,因此您可能会看到如下可怕的警告:

这是正常现象. 我们仅对证书的加密方面感兴趣,而对主机真实性的第三方验证不感兴趣. 点击“高级”,并提供一个链接以继续访问您的主机:

您应该被带到您的网站. 如果您在浏览器的地址栏中签到,则会看到带有“ x”的锁. 在这种情况下,这仅意味着无法验证证书. 它仍在加密您的连接.
如果使用两个服务器块配置Nginx来自动将HTTP内容重定向到HTTPS,则还可以检查重定向是否正常:
http://server_domain_or_IP
如果结果是相同的图标,则表示您的重定向正常.
如果重定向有效ssl 证书,并且您确定只希望允许加密的流量,则应修改Nginx配置以使重定向永久生效.
再次打开服务器块配置文件:
sudo nano /etc/nginx/sites-available/default
查找返回302并将其更改为返回301:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name server_domain_or_IP;
return 301 https://$server_name$request_uri;
}
. . .
保存并关闭文件.
检查配置中的语法错误:
sudo nginx -t
准备就绪后,重新启动Nginx以使重定向永久生效:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-213897-2.html
先转再看