V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
schen1027a1
V2EX  ›  程序员

小白服务器 443 端口求助

  •  
  •   schen1027a1 · 140 天前 · 1318 次点击
    这是一个创建于 140 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    8 条回复    2024-07-17 15:39:41 +08:00
    njmaojing
        1
    njmaojing  
       140 天前   ❤️ 1
    1. 不同端口转发,通过 nginx 的 proxy_pass
    2. 同一个 nginx ,同端口不同 server_name (即不同域名)也是可以的,也就是说你 nginx 也可以配多个 443 ,只要 server_name 是不同的域名就可以了
    coolfan
        2
    coolfan  
       140 天前
    看不太懂你说什么……
    如果你的需求是设备防火墙只开放了 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
        3
    GoRoad  
       140 天前
    不使用 nginx 也没有域名,你这种想法 大概只能通过 ip:port/a 和 ip:port/b 这种方式访问了吧
    schen1027a1
        4
    schen1027a1  
    OP
       140 天前
    @njmaojing 好的谢谢大佬
    schen1027a1
        5
    schen1027a1  
    OP
       140 天前
    @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
        6
    schen1027a1  
    OP
       140 天前
    @GoRoad 有域名,但是公网 ip 不知道,然后只开了 443 ,所以无法用域名+":81"来访问
    coolfan
        7
    coolfan  
       140 天前   ❤️ 1
    @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
        8
    schen1027a1  
    OP
       140 天前
    @coolfan 好的谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1069 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.