小白服务器 443 端口求助

2024-07-17 14:57:26 +08:00
 schen1027a1

部署项目的时候,发现服务器只开放 443 端口,且已经部署了 tomcat ,监听的 80 端口,转发到 443 ,跑着其他项目,然后我现在上传了 java 代码和前端后台,看不懂 tomcat ,所以使用 nginx ,监听的 81 端口,如何把他转发到 443 ,如果不使用 nginx ,又该如何实现?

1693 次点击
所在节点    程序员
8 条回复
njmaojing
2024-07-17 15:04:42 +08:00
1. 不同端口转发,通过 nginx 的 proxy_pass
2. 同一个 nginx ,同端口不同 server_name (即不同域名)也是可以的,也就是说你 nginx 也可以配多个 443 ,只要 server_name 是不同的域名就可以了
coolfan
2024-07-17 15:07:14 +08:00
看不太懂你说什么……
如果你的需求是设备防火墙只开放了 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;
}

}
}
```
GoRoad
2024-07-17 15:07:51 +08:00
不使用 nginx 也没有域名,你这种想法 大概只能通过 ip:port/a 和 ip:port/b 这种方式访问了吧
schen1027a1
2024-07-17 15:12:08 +08:00
@njmaojing 好的谢谢大佬
schen1027a1
2024-07-17 15:15:13 +08:00
@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;这里该如何修改
schen1027a1
2024-07-17 15:16:07 +08:00
@GoRoad 有域名,但是公网 ip 不知道,然后只开了 443 ,所以无法用域名+":81"来访问
coolfan
2024-07-17 15:24:23 +08:00
@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;
}
schen1027a1
2024-07-17 15:39:41 +08:00
@coolfan 好的谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1058022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX