部署项目的时候,发现服务器只开放 443 端口,且已经部署了 tomcat ,监听的 80 端口,转发到 443 ,跑着其他项目,然后我现在上传了 java 代码和前端后台,看不懂 tomcat ,所以使用 nginx ,监听的 81 端口,如何把他转发到 443 ,如果不使用 nginx ,又该如何实现?
1
njmaojing 52 天前 ![]() 1. 不同端口转发,通过 nginx 的 proxy_pass
2. 同一个 nginx ,同端口不同 server_name (即不同域名)也是可以的,也就是说你 nginx 也可以配多个 443 ,只要 server_name 是不同的域名就可以了 |
![]() |
2
coolfan 52 天前
看不太懂你说什么……
如果你的需求是设备防火墙只开放了 443 端口,但是提供服务的 tomcat 只监听 80 的话,只需要 nginx 对需要转发的请求配置 proxy_pass 就行了。 这个文件是对`/api/`和`/s/`开头的请求转发给本地的 80 端口,然后其他文件直接从`/usr/share/nginx/html`取。 ``` user nginx; worker_processes auto; # 自动检测 CPU 核心数 error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; multi_accept on; # 允许一个 worker 同时接受多个连接 } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' 'Proxy-URL: $proxy_host$request_uri'; access_log /var/log/nginx/access.log main; server { listen 443; server_name localhost; # 代理后端服务的配置 location ~ ^/(api|s)/ { proxy_pass http://localhost:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 禁用缓存,确保始终从后端获取最新内容 proxy_cache off; proxy_buffering off; } # 前端静态资源的配置 location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } } } ``` |
![]() |
3
GoRoad 52 天前
不使用 nginx 也没有域名,你这种想法 大概只能通过 ip:port/a 和 ip:port/b 这种方式访问了吧
|
4
schen1027a1 OP @njmaojing 好的谢谢大佬
|
5
schen1027a1 OP @coolfan 好的谢谢大佬,也就是说只需要用 nginx 把请求转发到 80 ,那我起的后端项目端口是 8082 的话 location ~ ^/(api|s)/ {
proxy_pass http://localhost:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;这里该如何修改 |
6
schen1027a1 OP @GoRoad 有域名,但是公网 ip 不知道,然后只开了 443 ,所以无法用域名+":81"来访问
|
![]() |
7
coolfan 52 天前 ![]() @schen1027a1 #5 修改 proxy_pass 的值,把目标指向本地的 8082 端口
# 代理后端服务的配置 location ~ ^/(api|s)/ { proxy_pass http://localhost:8082; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 禁用缓存,确保始终从后端获取最新内容 proxy_cache off; proxy_buffering off; } |
8
schen1027a1 OP @coolfan 好的谢谢
|