今天是我第一次使用 Nginx。我按照一些指南将其设置为专用反向代理。这就是我试图重新创建的 -http://www.integratedwebsystems.com/wp-content/uploads/2010/06/reverse_proxy.jpg
我使用端口 80 时运行良好,但通过 HTTPS 加载的任何内容都会出现 HTTP 内容不安全的错误。尝试通过互联网通过反向代理加载任何 HTTPS 站点看起来非常错误。内部加载则正常。
例子 -https://i.stack.imgur.com/90Mfc.png- 那应该是 Wordpress 管理控制台,它看起来像 90 年代的东西。
以下是我正在使用的 nginx 配置 -
server {
listen 80;
server_name domain1.com;
location / {
proxy_pass http://192.168.1.149/;
proxy_set_header Host $host;
}
}
# HTTPS server
server {
listen 443 ssl;
server_name domain1.com;
error_log /tmp/error.log;
ssl on;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_certificate /etc/nginx/ssl/server.crt;
location / {
proxy_pass http://192.168.1.149/;
proxy_set_header Host $host;
}
}
有人能告诉我我需要做什么才能让 HTTPS 通过反向代理正常工作吗?
答案1
您没有遗漏任何东西;您已正确配置 nginx。
这里的问题是 WordPress 认为它应该生成 HTTP 链接。当您尝试通过 HTTPS 访问它时,它仍然会生成所有链接,http://
因此无法加载它们(除非在浏览器中明确加载不安全的内容)。
如果您想要这样做,可以使用 WordPress 插件将您的管理控制台转换为 https。您还可以编辑博客的常规设置,快速轻松地将整个网站转换为 https,无需插件。
答案2
如果经济条件允许的话,你可以尝试重新加密流量:
location / {
proxy_pass https://192.168.1.149/;
proxy_set_header Host $host;
}
显然,应用服务器将会意识到 SSL。
另一种方法是配置备用 Apache 端口,例如
location / {
proxy_pass http://192.168.1.149:444/;
proxy_set_header Host $host;
}
使用虚拟主机设置适当的标志,使 Wordpress/PHP 相信该请求实际上已被加密,例如
SetEnv SSL=on
捕捉所有必要/充分的设置可能会很棘手。