Nginx80端口转发+域名——实现IP+端口隐藏

博客介绍了在一台服务器部署多个Tomcat应用时,解决访问需输入IP和端口号问题的方法。通过在Nginx的nginx.conf中插入配置,新建proxy.conf文件进行配置,最后在浏览器输入Tomcat域名即可访问,且Nginx和Tomcat可部署在不同服务器。

一.目的

1.相信大家会遇到这样的问题:当一台服务器部署多个tomcat应用时,当我们访问tomcat时,需要在浏览器中输入服务器IP+端口号,这看起来非常的low。

二. 环境

 1台服务服务器 假如IP:192.168.1.10
 一个ngnix 使用默认端口为80
 Tomcat1  端口为18501  申请域名为: 域名1 对应服务器ip 192.168.1.10
 Tomcat2  端口为18502  申请域名为: 域名2 对应服务器ip 192.168.1.10           
 Tomcat3  端口为18503  申请域名为: 域名3 对应服务器ip 192.168.1.10
  •  

三.nginx配置

1.打开conf下nginx.conf 在最后一个 } 前插入 include proxy.conf; 
2.新建文件 proxy.conf ,进行如下配置

### Tomcat1 ###
    server {
        listen       80;
        server_name  域名1;
        index index.jsp index.html index.html index.shtml;
        location / {
            proxy_pass http://127.0.0.1:18501;
            #Proxy Settings;
            #proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }

### Tomcat2 ###
    server {
        listen       80;
        server_name  域名2;
        index index.jsp index.html index.html index.shtml;
        location / {
            proxy_pass http://127.0.0.1:18502;
            #Proxy Settings;
            #proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }   

### Tomcat3 ###
    server {
        listen       80;
        server_name  域名3;
        index index.jsp index.html index.html index.shtml;
        location / {
            proxy_pass http://127.0.0.1:18503;
            #Proxy Settings;
            #proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
        }  

四.验证

1.在浏览器中输入Tomcat相应的域名,即可访问Tomcat。 
注:nginx 、Tomcat 可以部署到不同的服务器上。

转自:https://blog.youkuaiyun.com/qq_38795209/article/details/75506670

<think>首先,用户的问题聚焦于在Nginx配置文件中实现图片地址和端口的替代操作。用户希望将原本含有图片具体路径及端口号的URL,替换为直接使用域名访问的形式。用户引用了站内若干资料作为上下文支持。引用一确认Nginx配置文件语法正常,引用二阐述跨域问题解决方案及证书路径注意事项,引用三介绍域名转发至其他域名方法,引用四详述配置HTTPS与域名绑定步骤。这些材料构成理解需求的基础框架。Nginx配置核心在于灵活运用rewrite或proxy_pass模块,实现请求地址的重定向或代理转发。图片路径替换的本质是在用户访问特定域名时,服务器将请求映射到实际图片存储位置(可能含端口)。分析技术要点:若需保留端口号,可将该端口直接合并至域名(如img.example.com:8080);若去除端口,则需要设置域名默认监听端口(HTTP的80端口或HTTPS的443端口)。实现方法分两步走:首先配置server块绑定域名,然后定义location规则处理图片路径转换。以下为详细配置策略——</think> ### 在 Nginx 中将图片路径和端口替换为域名的配置方法 要实现将带有端口和路径的图片请求替换为域名访问,核心是通过 Nginx 的 **`rewrite`** 规则和 **`server` 块配置** 实现 URL 重写。以下是具体配置方案: #### 1. 配置域名端口绑定 ```nginx server { listen 80; server_name images.example.com; # 替换为您的图片专属域名 location / { root /path/to/images; # 图片实际存储目录 index index.html; # 关键重写规则:移除端口并重定向到域名 rewrite ^(.*):\d+(/.*)$ $1$2 permanent; } } ``` **作用**: 所有访问 `图片路径:端口`(如 `http://server_ip:8080/images/logo.jpg`)的请求会被永久重定向到 `http://images.example.com/images/logo.jpg`。 #### 2. 若需保留路径结构 ```nginx location ~* \.(jpg|png|gif)$ { # 匹配图片文件扩展名 # 替换 URL 中的端口域名 rewrite ^/(.+):\d+(/.+\.(jpg|png|gif))$ http://images.example.com$2 permanent; } ``` **示例效果**: `http://192.168.1.100:8080/static/photo.jpg` → `http://images.example.com/static/photo.jpg` #### 3. 进阶场景:反向代理隐藏端口 ```nginx server { listen 80; server_name images.example.com; location /assets/ { # 虚拟路径 # 代理到实际带端口的图片服务 proxy_pass http://localhost:8080/img_store/; proxy_set_header Host $host; } } ``` **效果**: 访问 `http://images.example.com/assets/banner.png` 实际返回 `http://localhost:8080/img_store/banner.png` (用户始终看到域名路径)[^2][^3] --- ### 关键验证步骤 1. **语法检查**:执行 `nginx -t` 确保配置文件无错误(如引用[1]提示)[^1] 2. **清除缓存**:重定向后强制刷新浏览器(Ctrl+F5) 3. **日志监控**:通过 `tail -f /var/log/nginx/access.log` 跟踪请求路径变化 > **注意事项** > - 若用 HTTPS 需配置 SSL 证书(参考引用[4])[^4] > - 路径匹配使用正则时需转义特殊字符(如 `\.` 表示句点) > - 生产环境建议 `301 permanent` 重定向利于SEO --- ### 替代方案对比 | 方法 | 适用场景 | 缺点 | |---------------|-----------------------------------|--------------------------| | rewrite 重定向| 简单路径替换 | 需暴露最终地址 | | proxy_pass 代理| 隐藏源服务器端口/路径 | 增加一层转发延迟 | | alias 映射 | 目录结构调整 | 无法处理端口替换 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值