Nginx解析域名到指定端口


一、配置文件路径

在大多数Linux系统上,Nginx的配置文件通常位于/etc/nginx目录下。主要的配置文件是nginx.conf,而针对每个站点的配置文件通常存储在/etc/nginx/conf.d/目录或/etc/nginx/sites-available/目录下。

以下是一些常见的Nginx配置文件和目录:

主配置文件:

/etc/nginx/nginx.conf: 主要的Nginx配置文件。
站点配置:

/etc/nginx/conf.d/: 这个目录通常包含一些独立的站点配置文件,以.conf为后缀。
/etc/nginx/sites-available//etc/nginx/sites-enabled/: 有些系统使用这两个目录来管理站点配置。配置文件在sites-available中创建,通过符号链接到sites-enabled中启用。
其他配置目录:

/etc/nginx/snippets/: 包含可重用的配置片段,可以在其他配置文件中包含。

二、修改配置文件内容

我这里进入到/etc/niginx/conf.d目录下
修改我的https.conf文件,以下为文件示例

server {
    listen 80;
    server_name domain-a.com;

    location / {
        proxy_pass http://127.0.0.1:1234;
        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;
    }
}

server {
    listen 80;
    server_name domain-b.com;

    location / {
        proxy_pass http://127.0.0.1:1233;
        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;
    }
}

三、重启Nginx服务

sudo systemctl restart nginx

### Nginx 配置域名解析的方法 Nginx 支持多种方式完成域名解析,主要分为静态解析和动态解析两种模式。 #### 1. 静态解析 当使用 `server_name` 指定特定域名时,Nginx 默认会在启动时解析域名并将其转换为 IP 地址。这种方式适用于域名对应 IP 不会发生变化的情况[^1]。 例如,在配置文件中可以这样设置: ```nginx server { listen 80; server_name example.com www.example.com; location / { root /var/www/example; index index.html; } } ``` 上述配置表示监听端口 80 并处理来自 `example.com` 和 `www.example.com` 的请求[^2]。 --- #### 2. 泛域名解析 对于需要支持多个子域名的场景,可以通过正则表达式实现泛域名匹配。以下是典型的配置示例: ```nginx server { listen 80; server_name ~^(?<subdomain>.+)\.yourdomain\.com$; location / { proxy_pass http://backend_server_$subdomain; } } ``` 此配置允许任意二级域名(如 `test.yourdomain.com`, `dev.yourdomain.com`)被解析到不同的后端服务。 --- #### 3. 动态域名解析 (Resolver) 如果目标域名对应的 IP 地址可能会发生变化,则需要启用动态解析功能。这通过 `resolver` 指令指定 DNS 服务器地址来实现。每次请求都会根据 DNS 缓存的有效时间重新查询最新的 IP 地址[^3]。 以下是一个完整的动态解析配置实例: ```nginx http { resolver 114.114.114.114 ipv6=off; # 使用公共 DNS 服务器 server { listen 80; server_name dynamic-domain.com; location / { set $target_backend backend-server.dynamic-domain.com; proxy_pass http://$target_backend; } } } ``` 在此配置中: - `resolver` 定义了用于实时解析的目标 DNS 服务器。 - `$target_backend` 是一个变量,存储实际要访问的服务名称。 - 当目标域名的 IP 发生变更时,Nginx 能够自动更新其映射关系[^4]。 --- #### 4. TTL 控制与性能优化 为了减少频繁的 DNS 查询带来的开销,建议合理调整 DNS 记录的生存时间(TTL)。默认情况下,Nginx 会遵循 DNS 提供的 TTL 设置;也可以手动覆盖这一行为,例如强制每分钟刷新一次记录: ```nginx resolver 8.8.8.8 valid=1m; # Google Public DNS, 缓存有效期设为 1 分钟 ``` 这种做法可以在稳定性与效率之间找到平衡点。 --- ### 总结 以上介绍了三种常见的 Nginx 域名解析方法:静态解析适合固定 IP 的情况;泛域名解析满足多级子域需求;而动态解析则是应对高可用性和灵活性的最佳实践方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值