我意识到这看起来至少与其他几个问题重复,但我已经读过它们好几遍了,仍然做错了什么。
以下是位于的 myexample.com nginx 配置文件的内容/etc/nginx/sites-available
。
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name myexample.com www.myexample.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
#Configures the publicly served root directory
#Configures the index file to be served
root /var/www/myexample.com;
index index.html index.htm;
}
它起作用了,当我去https://myexample.com内容已提供,连接安全。因此,此配置似乎不错。
现在,如果我将 SSL 端口更改为 9443 并重新加载 nginx 配置,则配置将重新加载而不会出现错误,但访问https://myexample.com浏览器中显示错误(无法访问此站点/myexample.com 拒绝连接。ERR_CONNECTION_REFUSED)
我已经尝试过建议和文档这里,这里, 和这里(以及其它)但我总是收到 ERR_CONNECTION_REFUSED 错误。
我应该注意,我可以使用非标准端口,然后在 URL 中明确输入该端口,例如,https://myexample.com:9443。但我不想这样做。我想要的是让用户能够在任何浏览器中输入 myexample.com,然后 nginx 自动重定向到安全连接。
再次,当我使用标准 443 SSL 端口时,没有遇到任何问题。
编辑:我在 debian/jessie 上使用 nginx/1.6.2
答案1
为了支持输入“https://myexample.com“在您的浏览器中,和nginx
通过监听端口 9443 的配置来处理它,您将需要一个额外的nginx
配置来监听端口 443,因为这是浏览器连接的 IP 端口。
因此:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name myexample.com www.myexample.com;
ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
# Redirect the browser to our port 9443 config
return 301 $scheme://myexample.com:9443$request_uri;
}
server {
listen 9443 ssl;
listen [::]:9443 ssl;
server_name myexample.com www.myexample.com;
ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
#Configures the publicly served root directory
#Configures the index file to be served
root /var/www/myexample.com;
index index.html index.htm;
}
请注意,两个部分都需要相同的证书/密钥,因为证书是通常与 DNS 主机名相关,但不一定与端口相关。
希望这可以帮助!
答案2
当你输入https://example.com,https:// 方案的标准是连接到端口 443。就你的情况而言,你已移动服务器,以便它现在侦听端口 9443。你得到连接被拒绝因此出现此消息 - 端口 443 上没有任何内容处于监听状态。
您需要安排某些东西监听端口 443,将连接重定向到端口 9443,或者使用端口作为 URL 的一部分。
答案3
如果将端口更改为非标准端口(如 9443),则需要添加从 443 到 9443 的重定向。将 nginx 设置为该端口的反向代理。