nginx server_name配置文件覆盖不生效

本文涉及的产品
.cn 域名,1个 12个月
简介: nginx server_name配置文件覆盖不生效

目录
nginx server配置文件覆盖不生效
如果不加server_name会发生什么
除了不加server_name还有可能有其他情况导致配置失效
怎么1个nginx配置两个域名
nginx server配置文件覆盖不生效
背景: 要在1个nginx上加两个域名解析,dns解析已经做了,按正常来说,当访问不同的域名的时候,可以分别跳转到不同的后端,但是现象是所有的请求都打到新增的那个后端服务上了,
最后发现原先的同事在配置443的时候,没有加server_name

如果不加server_name会发生什么
server_name 指令用于指定一个或多个域名,Nginx 将根据客户端请求中的 Host 头来匹配相应的 server_name,从而确定应该用哪个 server block 来处理请求。
如果没有 server_name 指令,Nginx 将无法区分不同域名的请求,因此所有请求都将被默认server block处理。默认情况下,如果没有指定 server_name,Nginx 会认为该server block是一个默认server block,它会处理所有未匹配其他server block的请求。

除了不加server_name还有可能有其他情况导致配置失效
配置文件位置错误:
如果你直接在 /etc/nginx/nginx.conf 文件中添加了新的server block,那么可能会覆盖已有的server block配置。正确的做法是在 /etc/nginx/conf.d/ 目录下创建独立的配置文件,并确保 /etc/nginx/nginx.conf 包含了这些配置文件的引用。

配置文件引用丢失:
如果你在 /etc/nginx/nginx.conf 文件中删除了引用其他配置文件的行(例如 include /etc/nginx/conf.d/*.conf;),那么其他配置文件将不会被加载。

server_name 配置问题:
如果新的server block中的 server_name 包含了其他域名,那么这些域名的请求将被新的server block处理。确保 server_name 只包含目标域名及其子域名(如有必要)。

默认server block问题:
如果没有指定 server_name 的server block被认为是默认server block,它会捕获所有未匹配其他server block的请求。确保没有默认server block,或者确保默认server block的行为符合预期。

配置冲突:
如果多个server block监听相同的端口,并且它们之间存在重叠(比如 server_name 设置有误),那么Nginx会选择最先匹配的server block来处理请求。检查所有server block的 server_name 设置是否正确无误。

怎么1个nginx配置两个域名
假设我们有两个域名 example.com 和 test.com,并且这两个域名分别需要代理到不同的后端服务器:

示例配置

example.com 的配置
server {
listen 443 ssl http2;
server_name example.com www.example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

location / {
    proxy_pass http://backend_server_for_example_com; # 例如: http://192.168.1.100:8000
    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;
}

}
test.com 的配置
server {
listen 443 ssl http2;
server_name test.com www.test.com;

ssl_certificate /etc/letsencrypt/live/test.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/test.com/privkey.pem;

location / {
    proxy_pass http://backend_server_for_test_com; # 例如: http://192.168.1.101:8000
    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;
}

}
注意事项
[kod.nykh6.com)
[kod.qdljjx.com)
[kod.haimengdi.com)
[kod.haoshuchina.com)
[kod.hbfloor.net)
[kod.gzmiwu.com)
[kod.guanwanggou.com)
[kod.gzgmfhm.com)
监听端口和协议:确保listen指令包含了http2,因为现代浏览器支持HTTP/2,这可以提高性能。不过,这不是必须的,可以根据实际需求决定是否开启。
域名匹配:确保server_name指令中列出的所有域名都是你希望配置的域名。例如,如果你希望www.example.com和example.com都指向同一个后端,那么就需要在server_name中列出这两个域名。
证书路径:确保ssl_certificate和ssl_certificate_key指令中的路径指向正确的证书文件。这些文件通常由SSL证书颁发机构提供。
后端地址:确保proxy_pass指令中的URL指向正确的后端服务器地址。例如,如果是内部局域网内的服务器,可能是类似http://192.168.1.100:8000这样的地址。

配置验证
sudo nginx -t
如果配置正确,输出应该类似于:

sudo systemctl reload nginx

相关文章
|
5月前
|
存储 Ubuntu 应用服务中间件
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
84 1
|
7天前
|
缓存 负载均衡 应用服务中间件
nginx的配置文件详解
本文详细解释了nginx配置文件中的关键指令和区块,如http、server、location、upstream、events等,并通过一个示例配置文件展示了如何设置HTTP服务器、gzip压缩、反向代理、URL重写、错误页面和负载均衡等,强调了配置的灵活性和实际应用。
24 4
|
5月前
|
负载均衡 应用服务中间件 API
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
Nginx配置文件详解Nginx负载均衡Nginx静态配置Nginx反向代理
146 4
|
2天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
27 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
6天前
|
应用服务中间件 nginx
nginx 配置文件
nginx 配置文件
|
4月前
|
缓存 负载均衡 应用服务中间件
深入解析Nginx配置文件
Nginx是一个高性能HTTP服务器和反向代理,其配置文件`nginx.conf`包含全局、事件、HTTP、Server和Location块。全局块设置如用户和工作进程数,事件块设定连接数,HTTP块涉及MIME类型、日志和包含其他配置。Server块定义虚拟主机,Location块处理URI匹配。Nginx常用于反向代理和负载均衡,如`proxy_pass`指令转发请求至后端服务器组。理解这些配置有助于服务器优化和测试。
77 0
|
2月前
|
运维 应用服务中间件 网络安全
运维系列.Nginx配置文件结构功能总结
运维系列.Nginx配置文件结构功能总结
46 0
运维系列.Nginx配置文件结构功能总结
|
2月前
|
应用服务中间件 Linux PHP
【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com
【Azure 应用服务】App Service For Linux 环境中,如何修改 Nginx 配置中 server_name的默认值 example.com
|
3月前
|
Ubuntu 应用服务中间件 Linux
Linux学习之Ubuntu 20中OpenResty的nginx目录里内容和配置文件
总的来说,OpenResty的Nginx配置文件是一个强大的工具,它允许你以非常灵活的方式定义你的Web服务的行为。
47 2
|
3月前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些