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 -tsystemctl 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

Nginx禁止未绑定域名和IP访问443端口

nginx https必须是443吗

Apache 甚至更改端口 80 和端口 443 都拒绝打开

Tomcat监听443端口的方法

linux学习:Nginx--常见功能配置片段与优化-06