使用Nginx反向代理实现内网域名转发:详细配置指南

作者:本站 来源:本站

2026-03-15 09:16 1046阅读

使用Nginx反向代理实现内网域名转发:详细配置指南

场景描述

公司内网中有多台服务器的HTTP服务需要对外网静态IP进行映射时,如果仅依靠路由器的端口映射功能,只能将一台内网服务器的80端口映射到外网的80端口,其他服务器只能使用非80端口。这样访问时需要在域名后添加端口号,操作不便。同时,路由器最多只能设置20个端口映射,未来难以满足需求。
为此,内网搭建了一个Nginx反向代理服务器,将其80端口映射到外网IP的80端口。这样所有指向公司外网IP的域名请求都会发送到该反向代理服务器,再由Nginx根据不同的域名将请求转发至内网不同机器的对应端口,实现“依据域名自动转发”,而路由器只能做到“依据端口转发”。这一方案极大提升了灵活性。

涉及技术:Nginx编译安装、反向代理基本配置、路由器端口映射以及域名相关基础知识。

本次实验目标:在浏览器中输入 xxx123.tk 即可访问内网 192.168.10.38 的3000端口;输入 xxx456.tk 即可访问内网 192.168.10.40 的80端口。

配置步骤

服务器系统:Ubuntu 12.04

### 更新软件仓库

apt-get update -y

apt-get install wget -y

# 下载Nginx及相关软件包

pcre用于编译rewrite模块,zlib支持gzip功能。此处使用的Nginx版本较旧(1.4.2),可安装新版。

cd /usr/local/src

wget <a href="ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz</a>

wget <a href="http://zlib.net/zlib-1.2.8.tar.gz">http://zlib.net/zlib-1.2.8.tar.gz</a>

wget <a href="http://nginx.org/download/nginx-1.4.2.tar.gz">http://nginx.org/download/nginx-1.4.2.tar.gz</a>

tar xf pcre-8.33.tar.gz

tar xf zlib-1.2.8.tar.gz

# 安装编译环境

apt-get install build-essential libtool -y

# 创建Nginx运行用户(非特权用户)

useradd -s /bin/false -r -M -d /nonexistent www

# 开始编译安装

/configure --with-pcre=/usr/local/src/pcre-8.33 --with-zlib=/usr/local/src/zlib-1.2.8 --user=www --group=www \

--with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

make

make install

# 授权目录

chown -R www:www /usr/local/nginx

# 修改Nginx主配置文件

user www www;

worker_processes 1;

error_log logs/error.log;

pid logs/nginx.pid;

worker_rlimit_nofile 65535;

events {

    use epoll;

    worker_connections 65535;

}

http {

    include mime.types;

    default_type application/octet-stream;

    include /usr/local/nginx/conf/reverse-proxy.conf;

    sendfile on;

    keepalive_timeout 65;

    gzip on;

    client_max_body_size 50m; # 代理缓冲用户请求的最大字节数

    client_body_buffer_size 256k;

    client_header_timeout 3m;

    client_body_timeout 3m;

    send_timeout 3m;

    proxy_connect_timeout 300s; # 与后端服务器连接超时

    proxy_read_timeout 300s; # 后端服务器响应超时

    proxy_send_timeout 300s;

    proxy_buffer_size 64k; # 代理保存用户头信息的缓冲区大小

    proxy_buffers 4 32k;

    proxy_busy_buffers_size 64k;

    proxy_temp_file_write_size 64k;

    proxy_ignore_client_abort on;

    server {

        listen 80;

        server_name localhost;

        location / {

            root html;

            index index.html index.htm;

        }

        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

            root html;

        }

    }

}

编辑反向代理配置文件:

server {

    listen 80;

    server_name xxx123.tk;

    location / {

        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;

        proxy_pass http://192.168.10.38:3000;

    }

    access_log logs/xxx123.tk_access.log;

}

server

{

    listen 80;

    server_name xxx456.tk;

    location / {

        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;

        proxy_pass http://192.168.10.40:80;

    }

    access_log logs/xxx456.tk_access.log;

}

重新加载Nginx配置使其生效,并将域名 xxx123.tk 解析到公司静态IP。此时,访问 xxx123.tk 即可到达内网 192.168.10.38:3000,访问 xxx456.tk 到达 192.168.10.40:80。

若需实现后端负载均衡,可使用 upstream 模块,如下配置将 nagios.xxx123.tk 请求分发给内网 192.168.0.131 和 192.168.0.132 两台机器:

upstream monitor_server {

    server 192.168.0.131:80;

    server 192.168.0.132:80;

}

server {

    listen 80;

    server_name nagios.xxx123.tk;

    location / {

        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;

        proxy_pass http://monitor_server;

    }

    access_log logs/nagios.xxx123.tk_access.log;

}

由于所有HTTP请求最终由反向代理服务器发起,后端服务器的访问日志中记录的IP是代理服务器的IP。若要记录真实客户端IP,需要调整后端日志格式。假设后端也是Nginx,配置如下:

log_format access '$HTTP_X_REAL_IP - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $HTTP_X_Forwarded_For';

access_log logs/access.log access;

对比默认日志格式(使用 $remote_addr),可见差异。

遇到的问题

  • 最初未配置代理超时参数时,偶尔出现504 Gateway Timeout错误。排查日志显示:“upstream timed out (110: Connection timed out) while reading response header from upstream”。
  • 通过实验将 proxy_read_timeout 设为1ms后每次访问均出现504,确认是后端响应超时所致。增加如下配置后问题解决:

    proxy_connect_timeout 300s;
    proxy_read_timeout 300s;
    proxy_send_timeout 300s;
    proxy_buffer_size 64k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    proxy_ignore_client_abort on;

    上一篇

    在2019中国云计算和物联网大会上,我国自主知识产权的“.chn”网络域名与新一代物联网商用平台首次亮相,解决了物联网发展的标准、平台、网络空间资源三大核心难题,标志核心技术不再受制于人,物联网发展进入快车道。

    下一篇

    科睿唯安发布《亚太知识产权2020年度报告》,显示亚洲在专利、商标、域名申请量上持续领先全球,成为创新枢纽。中国专利申请量增长显著,推动全球趋势;亚太地区商标申请活跃,但海外权益保护面临挑战;域名管理方面,多数500强企业未使用专业机构。报告强调亚洲创新领导者地位日益凸显。

    相关阅读

    本文详细介绍了域名的层级结构,包括顶级域名、二级域名、三级域名以及二级目录的概念和区别。通过具体示例帮助读者理解如何根据点分隔的后缀数量判断域名层级,同时阐述了顶级域名的三种类型(ccTLDs、gTLDs、New gTLDs)及其特点。最后从网站优化角度对比了主域名、二级域名和二级目录的权重差异,并给出了实际建站时的选择建议。
    本文详细解读了网站备案新政策下的备案域名基础知识,包括备案域名的定义、备案性质(个人与企业)、备案失效风险、不支持备案的域名后缀、不备案的使用限制,以及2018年起实施的域名实名制、注册服务商选择、信息一致性等关键要点。同时介绍了个人及企业备案的具体要求,以及域名核验范围等实用信息,帮助用户合规完成网站备案。
    2016年6月22日,.top域名在南京高淳区固城中心小学举办“心系学子,书香校园”爱心图书捐赠活动,捐赠1000册图书,帮助缓解学校图书资源不足的问题,鼓励孩子们养成阅读习惯,展现企业社会责任。
    本文澄清了.tm域名与商标之间的常见误解,指出.tm仅为土库曼斯坦国家域名,与商标无关,并详细对比了域名与商标在适用对象、排他性、取得原则及显著性要求上的四大区别,提醒企业尽早保护相关域名。
    本文系统梳理了计算机基础知识,涵盖计算机发展史(从ENIAC到四代演变)、特点、应用领域与分类;详细介绍了数制与编码(二进制运算及进制转换)、计算机系统组成(冯·诺依曼理论、硬件五部件、CPU、存储器分类及输入输出设备)和软件系统;还讲解了计算机网络分类、网络设备(同轴电缆、双绞线、光缆、调制解调器、网卡、路由器、中继器)、IP地址与域名;最后补充了Excel公式与函数的使用以及硬件各部分功能。适合入门学习与复习参考。
    在第五届中文域名创新应用论坛上,专家们围绕中文域名发展展开讨论,认为中文域名是网络品牌和知识产权的重要载体。工信部表示将持续加强互联网基础管理,完善应用环境。报告显示中文域名领跑全球多语种域名,域名保有量占比85.3%。各方呼吁共同优化中文域名应用环境,助力数字经济发展。
    域名投资人潘总(感觉)分享从大学接触域名故事到入行实战的经验。他坦言曾单打独斗、交过不少学费,后来加入米友群才系统学习。他建议新人专注一个领域深耕,并坚持合理建仓、标高价,等待机会。其最高成交记录接近六位数,强调谋事在人、成事在天。
    在重庆召开的2019中国云计算和物联网大会上,具有我国自主知识产权的“.chn”网络域名及新一代物联网商用平台首次亮相。这标志着我国攻克了物联网发展的标准、平台和网络空间资源三大核心难题,核心技术不再受制于人。新一代物联网商用平台同时获得5亿元A+轮融资,将用于建设全国物联网基础设施,未来有望实现网络大幅提速降费,推动产业蓬勃发展。
    全国首个域名生态平台在深圳诞生,旨在整合域名注册、交易、资产管理、拍卖等全链条服务,破解行业痛点。域名作为企业重要的无形资产和知识产权保护领域,其投资价值与应用价值日益凸显。平台将助力企业品牌保护,推动数字经济发展。