在当今互联网架构中,Nginx作为高性能的Web服务器和反向代理服务器,广泛应用于内外网服务的配置与管理,通过合理配置外网域名与内网域名访问,可以实现服务的安全隔离、负载均衡及灵活转发,满足企业级应用的多场景需求,本文将围绕Nginx的内外网域名配置展开,从基础概念、配置原理、实践步骤到常见问题,系统梳理相关技术要点。

基础概念与核心作用
外网域名是指通过公网DNS解析,可被互联网用户直接访问的域名(如www.example.com),通常对应服务器的公网IP,面向公众提供Web服务、API接口等。内网域名则是在局域网或特定内网环境中使用的域名(如api.internal.local),通过内网DNS服务器或本地hosts文件解析,指向内网服务器的私有IP(如168.1.100),主要用于内部系统通信、服务发现或安全隔离。
Nginx在内外网域名访问中的核心作用体现在三个方面:
- 反向代理:将外网请求转发至内网服务,隐藏后端服务器真实IP,提升安全性;
- 负载均衡:通过配置多个后端服务器,实现请求分发,提高系统可用性;
- 访问控制:基于域名、IP或路径进行权限校验,限制非法访问。
外网域名访问配置
外网域名访问需结合Nginx的server块、listen指令及DNS解析,确保公网用户能正确请求到目标服务,以下是具体配置步骤:
环境准备
- 服务器已绑定公网IP,并在域名服务商(如阿里云、Cloudflare)配置DNS解析,将域名指向该公网IP;
- 安装Nginx,并确保防火墙(如
ufw、firewalld)放行80(HTTP)和443(HTTPS)端口。
基础配置示例
在Nginx配置文件(通常为/etc/nginx/nginx.conf或/etc/nginx/sites-available/default)中定义server块:
server {
listen 80;
server_name www.example.com; # 外网域名
location / {
proxy_pass http://127.0.0.1:8080; # 转发至本地内网服务
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
关键指令解析:
listen 80:监听80端口,接收HTTP请求;server_name:指定外网域名,可配置多个域名(用空格分隔)或通配符(如*.example.com);proxy_pass:将请求转发至后端服务地址,此处为本地内网服务的8080端口;proxy_set_header:转发请求头信息,确保后端服务能获取客户端真实IP。
HTTPS配置(可选)
为提升安全性,需配置SSL证书(可通过Let’s Encrypt免费获取):

server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt; # 证书文件路径
ssl_certificate_key /etc/nginx/ssl/example.com.key; # 私钥文件路径
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
}
配置完成后,执行nginx -t检查语法,再通过nginx -s reload重载配置。
内网域名访问配置
内网域名访问主要面向内部服务,可通过内网DNS服务器或本地hosts文件解析,结合Nginx的server块实现请求转发。
解析方式选择
- 内网DNS服务器:在企业内网环境中,搭建DNS服务器(如Bind、dnsmasq),将内网域名(如
api.internal.local)解析至对应内网IP(如168.1.100); - 本地hosts文件:在测试或小规模场景中,直接在客户端机器的
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)中添加解析记录:168.1.100 api.internal.local。
Nginx内网服务配置
假设内网有一台应用服务器(IP:168.1.100,端口:8080),需通过内网域名api.internal.local访问,Nginx配置如下:
server {
listen 80;
server_name api.internal.local; # 内网域名
location / {
proxy_pass http://192.168.1.100:8080; # 直接转发至内网服务器
proxy_set_header Host $host;
proxy_connect_timeout 5s; # 连接超时时间
proxy_read_timeout 30s; # 读取超时时间
}
}
注意事项:
- 若Nginx与内网服务不在同一网段,需确保网络路由可达;
- 可通过
access.log监控内网请求情况,排查访问问题。
内网多服务隔离
若内网存在多个服务(如api.internal.local、db.internal.local),可通过不同server块隔离:
# API服务
server {
listen 80;
server_name api.internal.local;
location / {
proxy_pass http://192.168.1.100:8080;
}
}
# 数据库管理服务
server {
listen 80;
server_name db.internal.local;
location / {
proxy_pass http://192.168.1.101:3306; # 假设数据库服务端口为3306
proxy_set_header Host $host;
}
}
内外网域名协同配置
在实际应用中,常需通过外网域名访问内网服务(如远程办公访问内部系统),此时可通过Nginx的location块结合路径转发实现。

配置示例
外网域名www.example.com的/internal路径指向内网服务api.internal.local:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# 外网公开服务
location / {
root /var/www/html;
index index.html;
}
# 内网服务代理(需认证)
location /internal/ {
proxy_pass http://api.internal.local; # 内网域名
proxy_set_header Host $host;
auth_basic "Restricted Access"; # 基本认证
auth_basic_user_file /etc/nginx/.htpasswd; # 认证用户文件
}
}
功能说明:
- 用户通过
https://www.example.com/internal/访问时,Nginx将请求转发至内网服务api.internal.local; auth_basic添加基本认证,提升内网服务访问安全性;- 可通过
rewrite指令调整路径(如rewrite ^/internal/(.*)$ /$1 break;去除路径前缀)。
负载均衡扩展
若内网服务有多台实例,可通过upstream模块配置负载均衡:
upstream internal_backend {
server 192.168.1.100:8080 weight=3; # 权重3
server 192.168.1.101:8080 weight=2; # 权重2
server 192.168.1.102:8080 backup; # 备用服务器
}
server {
listen 80;
server_name api.internal.local;
location / {
proxy_pass http://internal_backend;
proxy_set_header Host $host;
}
}
负载均衡策略:
weight:权重值越高,分配请求的概率越大;backup:仅当前面服务器不可用时启用;- 可替换为
ip_hash、least_conn等策略,满足不同场景需求。
常见问题与解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 外网域名无法访问 | DNS解析未生效、防火墙拦截、Nginx未启动 | 检查DNS记录(dig命令)、开放端口、确认Nginx进程(systemctl status nginx) |
| 内网域名解析失败 | 内网DNS配置错误、hosts文件未更新 | 验证内网DNS连通性(nslookup)、同步hosts文件 |
| 代理后端服务显示502错误 | 后端服务未启动、超时时间过短 | 检查后端服务状态、调整proxy_connect_timeout和proxy_read_timeout参数 |
| HTTPS访问显示证书不可信 | 证书路径错误、证书过期 | 确认证书文件路径、更新Let’s Encrypt证书(certbot renew) |
Nginx通过灵活的server块、location块及代理模块,实现了外网域名与内网域名的高效管理,外网域名配置需关注DNS解析、SSL加密及公网安全,内网域名则侧重服务隔离与内网路由优化,内外网协同场景下,结合负载均衡与访问控制,可构建安全、稳定、可扩展的服务架构,实际部署中,需根据业务需求调整参数,并通过日志监控及时排查问题,确保系统稳定运行。


















