在这里尝试使用 Nginx 作为反向代理。这就是我想要实现的目标:
example.com
和www.example.com
到https://example.com
。这是流程:example.com
-> Nginx
->Go web server listening on port 5000
似乎重写工作正常,导致我在浏览器中得到https://example.com
,但是我在浏览器中收到此错误:
ERR_TOO_MANY_REDIRECTS
如果重要的话,我的 DNS 设置如下:
@ - A - 11.XX.XX.XX
www - A - 11.XX.XX.XX
这是我的/etc/nginx/nginx.conf
文件:
events {
worker_connections 1024;
}
http {
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
rewrite ^(.*)$ https://example.com$request_uri permanent;
location / {
proxy_pass http://127.0.0.1:5000;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.example.com example.com;
ssl_certificate "/etc/letsencrypt/live/example.com/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/example.com/privkey.pem";
rewrite ^(.*)$ https://example.com$request_uri permanent;
location / {
proxy_pass http://127.0.0.1:5000;
}
}
}
任何帮助,将不胜感激。网络小白在这里。
另外两个答案对于解决这个问题的答案非常有帮助(重定向循环)。然而,还有另一个错误,即即使我重定向到非 www https 版本,www 也每次都出现。
这是执行以下操作的更新配置:
将 http 转为 https
events {
worker_connections 1024;
}
http {
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name www.example.com;
ssl_certificate "/etc/letsencrypt/live/example.com-0001/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/example.com-0001/privkey.pem";
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com;
ssl_certificate "/etc/letsencrypt/live/example.com-0001/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/example.com-0001/privkey.pem";
location / {
proxy_pass http://127.0.0.1:5000;
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句