nginx配置服务器跳转实现一个域名访问两台服务器

本文详细介绍了如何使用Nginx配置代理不同服务器端口,实现基于域名路径的反向代理,并配置SSL证书实现HTTPS安全连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实只需要修改配置文件nginx.conf,在server中添加location就好

server {
        listen       80;
        server_name 你的域名或ip,例:www.baidu.com;

        location / {
            root   html;
            index  index.html index.htm;
        }       

        location /aaa {
            root   html;
            index  index.html index.htm;
            proxy_pass http://
服务器A:8080/;
        }
        
        location /bbb {
            root   html;
            index  index.html index.htm;
            proxy_pass http://
服务器B:8080/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

实现的效果就是访问 www.baidu.com/aaa 访问的是服务器A的8080端口

                            访问 www.baidu.com/bbb 访问的是服务器B的8080端口

 

红色警告:下面是443的绑了证书的,不需要的当没看到就好了

 

一、首先监听80端口,跳到443

server {
        listen       80;
        server_name 你的域名或ip;
        rewrite ^/(.*)$ https://你的域名或ip:443/$1 permanent;

        location / {
            root   html;
            index  index.html index.htm;
        }       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

    server {
        listen       443 ssl;
        server_name  域名/ip;
        ssl on;
        ssl_certificate      手动隐藏路径/fydsoft.club.pem;
        ssl_certificate_key   手动隐藏路径/fydsoft.club.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   html;
            index  index.html index.htm;
        }
                
        location /aaa {
            root   html;
            index  index.html index.htm;
            proxy_pass http://服务器A:8080/;
        }
        
        location /bbb {
            root   html;
            index  index.html index.htm;
            proxy_pass http://服务器B:8080/;
        }

        

    }

 

HI,路人:如果哪里写的不明白请指出,如果能帮到你那最好不过了,我比较欠赞哦

<think>好的,我现在要帮用户解决在同一台服务器配置多个域名时出现的“未知主机”(unknown host)错误。首先,我需要根据用户提供的引用信息和常见的问题来分析可能的原因。 首先,用户提到在Nginx配置了两个域名服务器块,但访问时出现“unknown host”错误。这可能涉及到Nginx配置是否正确。根据引用[4],用户的配置文件中,每个server块可能没有正确设置server_name指令,导致Nginx无法根据域名区分请求。例如,用户当前的配置中server_name被注释掉了,这样Nginx可能无法正确路由请求到对应的服务器块,从而返回错误。 其次,检查DNS解析是否正确。用户可能需要确保两个域名都正确解析到了服务器的IP地址。如果DNS记录没有正确设置,访问时可能无法找到主机,导致错误。比如引用[2]中提到页面跳转到其他域名,可能是因为DNS配置或代理设置的问题。 另外,查看Nginx的错误日志可以帮助确定问题。引用[3]中的例子显示,当域名解析IP变更后,Nginx可能仍然缓存旧的IP地址,需要重启才能生效。类似地,如果用户的DNS解析正确,但Nginx没有重新加载配置,也可能导致问题。因此,检查日志是否有连接超时或解析错误的记录很重要。 还需要确认端口监听是否正确。用户的配置中listen指令指定了不同的IP和端口,但如果在同一IP上使用不同端口,可能需要确保防火墙允许这些端口的流量。或者,如果用户想通过同一端口(如80)监听多个域名,应该使用server_name来区分,而不是不同的IP地址。 可能的解决步骤包括:检查每个server块的server_name是否正确配置,确认域名DNS解析正确,确保Nginx配置重新加载,以及检查端口监听设置。另外,查看错误日志中的具体错误信息也能提供线索,比如是否有无法解析主机名或无法连接到上游服务器的错误。 最后,如果用户在同一台服务器上使用相同的IP和端口,必须依靠server_name来区分不同的域名。如果server_name缺失或错误,Nginx无法正确匹配请求的域名,从而返回默认的服务器块或找不到匹配的主机,导致“unknown host”错误。</think>### 解决同一服务器部署多域名时"unknown host"错误的方法 #### 1. 检查Nginx的server_name配置Nginx配置中,必须为每个虚拟主机明确指定`server_name`字段,否则Nginx会默认使用第一个匹配的server块处理请求。根据引用[4]的配置示例,当前配置中`server_name`被注释: ```nginx server { listen 192.168.108.130:80; #server_name # 缺少域名声明 root /test/130; } ``` * 修正方法*:为每个域名添加`server_name`声明: ```nginx server { listen 80; server_name domain1.com; root /test/130; } server { listen 80; server_name domain2.com; root /test/140; } ``` #### 2. 验证DNS解析配置 确保两个域名都正确解析到服务器IP: - 使用`nslookup`或`dig`命令验证解析: ```bash dig domain1.com +short dig domain2.com +short ``` 若输出结果与服务器IP不一致,需在DNS服务商处修正A记录[^2]。 #### 3. 检查Nginx配置加载状态 修改配置后需重新加载服务: ```bash nginx -t # 检查语法 nginx -s reload # 重新加载配置 ``` 如果未生效,可能需要强制重启: ```bash systemctl restart nginx ``` #### 4. 排查端口冲突与防火墙 若使用非标准端口(非80/443): - 确认`listen`指令端口开放: ```bash firewall-cmd --list-ports firewall-cmd --add-port=8080/tcp --permanent ``` #### 5. 分析错误日志定位问题 通过日志查看具体错误类型: ```bash tail -f /var/log/nginx/error.log ``` 常见错误模式: - `no resolver defined to resolve [domain]`:DNS解析失败 - `host not found in upstream`:代理目标域名无法解析 - `could not build server_names_hash`:server_name重复或语法错误 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值