Nginx拒绝监听端口443
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx拒绝监听端口443相关的知识,希望对你有一定的参考价值。
我在nginx上遇到问题,无法在端口443上监听。
监听端口80很好。我在下面包含了我的配置的摘要:
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl on;
ssl_certificate /var/www/certs/server.pem;
ssl_certificate_key /var/www/certs/server.key;
server_name server;
root /var/www/server;
access_log /var/log/nginx/server/access.log;
error_log /var/log/nginx/server/error.log;
index index.php;
}
不确定我要去哪里错。我检查过的所有内容都表明它应该可以工作。
我在使用nginx 1.14.0的Ubuntu 18.04上系统上没有防火墙,本人与服务器之间也没有防火墙。我已经用nginx -t
和systemctl reload
ed多次检查了配置。没有变化,端口无法为我打开。
答案
要配置HTTPS服务器,必须在服务器块中的侦听套接字上启用ssl参数,并且应指定服务器证书和私钥文件的位置:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}
单个HTTP / HTTPS服务器可以配置一个同时处理HTTP和HTTPS请求的服务器:
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
...
}
0.7.14之前,无法为各个侦听套接字选择性地启用SSL,如上所述。仅可以使用ssl指令为整个服务器启用SSL,从而无法设置单个HTTP / HTTPS服务器。添加了listen指令的ssl参数来解决此问题。因此不建议在现代版本中使用ssl指令。
基于名称的HTTPS服务器配置两个或多个侦听单个IP地址的HTTPS服务器时,会出现一个常见问题:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
...
}
server {
listen 443 ssl;
server_name www.example.org;
ssl_certificate www.example.org.crt;
...
}
另一答案
添加这些服务器块。
这是将http重定向到https
server {
listen 80;
server_name example.com;
location / {
return 301 https://$host$request_uri;
}
}
您的带ssl的主块
server {
listen 443 ssl ;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
index index.html index.htm index.nginx-debian.html;
server_name example.com;
location / {
proxy_pass http://localhost:5003; // Your port goes here
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
还要检查端口是否打开
以上是关于Nginx拒绝监听端口443的主要内容,如果未能解决你的问题,请参考以下文章
nginx同一端口监听多个域名和同时监听http,https