#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; server_names_hash_bucket_size 128; #gzip on; server { listen 80; server_name *.ahtjzz.cn; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://192.168.0.28/; } } server { listen 80; server_name gymxsso.zjxxhjs.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://gymxsso.zjxxhjs.com/; } } server { listen 80; server_name gymxzdy.zjxxhjs.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://gymxzdy.zjxxhjs.com/; } } server { listen 80; server_name gymxrlsbgl.zjxxhjs.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://gymxrlsbgl.zjxxhjs.com/; } } server { listen 80; server_name gymxjcsj.zjxxhjs.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://gymxjcsj.zjxxhjs.com/; } } server { listen 80; server_n
时间: 2025-07-08 14:36:29 浏览: 4
<think>好的,用户想配置Nginx反向代理多个域名,包括子域。我需要根据提供的引用内容给出步骤。首先,确保用户了解Nginx配置文件的结构,每个域名一个.conf文件。引用[1]提到创建以.conf结尾的文件,比如light4d.top.conf,修改server_name和proxy_pass。这应该作为第一步,分开配置每个域名的好处是管理方便。
接下来,用户可能需要知道具体的配置内容。引用[3]中的示例展示了如何设置upstream和proxy_pass,但用户可能需要直接代理到不同端口。所以每个server块里应该指定server_name,然后location部分设置proxy_pass到对应的端口,同时设置proxy_set_header保留Host信息,避免丢失。
子域的情况可能需要单独处理,比如子域zjxxhjs.com需要单独的server块,server_name设为具体的子域名,比如sub.zjxxhjs.com,然后代理到相应的后端服务端口。
然后,测试配置和重载Nginx的步骤也很重要,用户可能需要检查语法错误,然后平滑重启。此外,HTTPS配置现在几乎是必须的,所以建议用户申请SSL证书,使用Let's Encrypt的certbot工具,并配置监听443端口,以及HTTP到HTTPS的重定向。
注意事项部分,引用[3]提到转发时会丢失Host等信息,所以必须设置proxy_set_header Host $host;,保持原始请求头。另外结合网关的情况,用户可能需要考虑负载均衡,但用户的问题主要是反向代理多个域名,所以可能不需要展开upstream的配置,除非有多个后端服务器。
最后,生成相关问题要考虑用户可能的后续需求,比如HTTPS配置、负载均衡、子域通配符、健康检查等。确保问题覆盖用户接下来可能遇到的步骤。</think>### 分步配置说明
1. **创建独立的配置文件**
- 在Nginx的`conf.d`或`sites-available`目录下,为每个域名创建独立的`.conf`文件,例如:
```bash
# 示例:为ahtjzz.cn创建配置文件
sudo nano /etc/nginx/conf.d/ahtjzz.cn.conf
```
- 配置文件命名需以`.conf`结尾,方便统一管理[^1]。
2. **配置域名反向代理**
- 每个域名的配置结构如下(以`ahtjzz.cn`为例):
```nginx
server {
listen 80;
server_name ahtjzz.cn; # 主域名
location / {
proxy_set_header Host $host; # 保留原始请求头[^3]
proxy_pass http://localhost:3000; # 代理到本机3000端口
}
}
server {
listen 80;
server_name sub.zjxxhjs.com; # 子域名配置
location / {
proxy_set_header Host $host;
proxy_pass http://localhost:4000; # 代理到本机4000端口
}
}
```
- 关键参数说明:
- `server_name`: 指定域名或子域名
- `proxy_pass`: 定义后端服务地址和端口
- `proxy_set_header`: 确保后端获取真实客户端信息[^3]
3. **配置HTTPS(可选但推荐)**
- 使用Let's Encrypt免费证书:
```bash
sudo certbot --nginx -d ahtjzz.cn -d sub.zjxxhjs.com
```
- 自动生成包含SSL配置的Nginx文件:
```nginx
server {
listen 443 ssl;
server_name ahtjzz.cn;
ssl_certificate /etc/letsencrypt/live/ahtjzz.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ahtjzz.cn/privkey.pem;
# 其他代理配置同上
}
```
4. **测试与重载配置**
- 检查语法:
```bash
sudo nginx -t
```
- 应用配置:
```bash
sudo nginx -s reload
```
### 注意事项
- 若后端服务需要获取真实客户端IP,需添加:
```nginx
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
```
- 多域名场景建议使用通配符证书简化SSL配置
- 可通过`upstream`模块实现负载均衡(参考引用[3]的示例)
阅读全文
相关推荐














