我在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重定向到httpsserver {

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;

}

}

还要检查端口是否打开

Logo

更多推荐