WindowServer服务器中Nginx配置https及http访问
一、需求分析
大家有没有遇到过下面这种情况:
服务器上部署项目后,微信小程序发布后需要配置Https才能访问项目,但此服务器上的443端口已被占用
一、解决思路
1、在服务器上配置反向代理。(思路,还未测试)
2、项目部署在B服务器上,配置A服务器的nginx转发请求到A服务器。(已测试通过)
三、尝试方法
3.1、方法一:反向代理
3.1.1、修改Nginx配置文件(nginx.conf),使其支持SSL,并将监听的端口改为8081
server {
listen 8081 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/yourdomain.pem;
ssl_certificate_key /path/to/yourdomain.key;
location / {
proxy_pass http://localhost:8080;
}
}
3.1.2、开通服务器和防火墙的8081端口,使用反向代理将所有80和443端口的流量重定向到8081端口。
在Nginx配置文件(nginx.conf)中添加以下内容,并重启Nginx服务:
server {
listen 80;
server_name yourdomain.com;
return 301 https://hosthostrequest_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/yourdomain.pem;
ssl_certificate_key /path/to/yourdomain.key;
return 301 https://hosthostrequest_uri;
}
名词解释:
listen:Nginx:监听的端口号
server_name:网站的域名
ssl_certificate和ssl_certificate_key分别表示SSL证书和密钥的路径
location / {} :表示所有请求都会被代理到本地的8080端口
return 301:表示重定向到HTTPS协议。
注:
通过以上配置,就能够在Win服务器上配置Nginx监听HTTPS请求并且监听8081端口,而访问时不需要带端口号。同时,通过反向代理将所有80和443端口的流量重定向到8081端口,从而避免了端口冲突的问题。
3.2、方法二:配置A服务器转发访问B服务器
3.2.1、在B服务器上配置tomcat项目以侦听一个端口(例如8080)。
3.2.2、配置A服务器上的Nginx文件,侦听443端口并使用SSL证书来启用https。
server {
listen 443 ssl;
server_name example.com;
# SSL证书配置
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/cert.key;
# 代理tomcat项目的配置
location /项目名1/ {
proxy_pass http://B_SERVER_IP:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
location /项目名2/ {
proxy_pass http://B_SERVER_IP:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
}
名词解释:
example.com:替换为您的域名,将/path/to/cert.pem和/path/to/cert.key替换为您的证书路径。将B_SERVER_IP替换为B服务器的IP地址。
listen:Nginx监听的端口号
server_name:网站的域名
ssl_certificate和ssl_certificate_key:分别表示SSL证书和密钥的路径
B_SERVER_IP:替换为B服务器的IP地址
注:
以上配置,可以通过https://example.com/tomcat来访问B服务器上的tomcat项目。
nginx将转发所有请求从A服务器到B服务器,而访问者将在https加密的连接下访问tomcat项目。
一个在学习的开发者,勿喷,欢迎交流