我有一个tomcat服务器,当前正在端口8082(http)上运行。我必须在不触摸服务器代码或tomcat配置的情况下创建站点https。我安装了nginx并能够将https重定向到http,但是浏览器仍然显示站点不受保护。我们如何使客户端使用https,然后nginx在内部重定向到http,但是所有调用都是https。
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name localhost;
location / {
proxy_pass "http://localhost:8082/app/";
}
}
server {
listen 443 ssl;
server_name localhost;
ssl_certificate nginx-selfsigned.crt;
ssl_certificate_key nginx-selfsigned.key;
rewrite ^(.*) http://localhost:8082/app$1 permanent;
}
}
答案 0 :(得分:0)
您应该使用Richard所提到的proxy_pass,这样您就不会通过端口8082重定向到后端URL(这就是浏览器直接访问http协议的原因。 您还需要设置防火墙规则以保护对此端口的外部访问
答案 1 :(得分:0)
对于当前配置,只需使用443,然后在此侦听器中使用proxy_pass,就像
一样简单server {
listen 443 ssl;
server_name localhost;
ssl_certificate nginx-selfsigned.crt;
ssl_certificate_key nginx-selfsigned.key;
location / {
proxy_pass "http://localhost:8082/app/";
}
}
您可能会对端口80感到困惑,该端口应重定向到443以确保所有流量都是HTTPS,例如
server {
listen 80;
rewrite ^(.*) https://localhost/$1 permanent;
}
还请注意,这些是我从配置中复制的伪代码,您需要尝试一下并稍后进行更改