首页 > 系统相关 >nginx server_name配置文件覆盖不生效

nginx server_name配置文件覆盖不生效

时间:2024-10-09 16:13:52浏览次数:8  
标签:name 配置文件 server nginx proxy com block

目录

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,并且这两个域名分别需要代理到不同的后端服务器:

示例配置

  1. 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;
    }
}
  1. 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;
    }
}

注意事项
监听端口和协议:确保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

标签:name,配置文件,server,nginx,proxy,com,block
From: https://www.cnblogs.com/liwenchao1995/p/18454498

相关文章

  • 【javascript 编程】Web前端之JavaScript动态添加类名的两种方法、区别、className、c
    通过className来添加或删除类名添加类名获取元素el.className="类名1类名2...";多个类名用空格隔开。移除类名获取元素名el.className="";直接等于一个空字符串即可删除类名。通过classList来添加或删除类名添加一个类名获取元素名el.classList.add("类名");。......
  • 【SQL SERVER】PIVOT与UNPIVOT之行列转换
    基础例子在数据处理的过程中,常常遇到行列转换的问题。例如,人员的考勤。可能表格中,1~12月都在同一个字段,实际中,为了查看方便,同一个人的考勤记录,能在同一行,这样查询起来比较方便(行转列)。或者,表格设计的时候就是1~12月,在其他数据分析时需要将列转行。即类似于以下两张表之间的相互......
  • 通过MySQL Workbench 将 SQL Server 迁移到GreatSQL
    通过MySQLWorkbench将SQLServer迁移到GreatSQL一、概述MySQLWorkbench提供了可以将MicrosoftSQLServer的表结构和数据迁移到GreatSQL的功能,此次将通过MySQLWorkbench将SQLServer的数据迁移到GreatSQL。本文章只是简单演示一下单张表的迁移,如果在项目中使用请根据......
  • PTA JAVA语言 面向对象程序设计 作业二 6-2 定义学生类 定义一个学生类(Student),其中包
    6-2定义学生类分数10作者 fpc 谢谢大佬关注,不定期分享学习笔记,希望大佬能多多支持,三连必回单位 内蒙古师范大学定义一个学生类(Student),其中包括四个属性:姓名(name),年龄(age),班级号(classNo),爱好(hobby)裁判测试程序样例:/*请在这里填写答案*/测试该类的程序如下:publiccl......
  • PTA JAVA语言 面向对象程序设计 作业二 6-3 Person类 构造Person类。包括姓名(name),性
    6-3Person类 谢谢大佬关注,不定期分享学习笔记,希望大佬能多多支持,三连必回单位 山东科技大学构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息输入描述:姓名(name),性别(sex)和年龄(age)输出描述:用户信息裁判测......
  • nacos gateway 调用服务报错503 Server unavailable
    环境springboot3jdk17依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.springframe......
  • 解决ERROR ResizeObserver loop completed with undelivered notifications.
    https://www.cnblogs.com/luo9tian/p/18116299该报错虽然不影响项目运行,但是影响开发效率,总是弹出报错的黑框很烦人该报错原因:newResizeObserver包裹的方法,在布局发生变化时,不支持每帧都调用解决方法:用window.requestAnimationFrame包裹回调函数在App.vue/main.js中加......
  • 【星闪开发连载】SLE_UUID_Server和SLE_UUID_Client程序测试
    引言前一篇博文介绍了SLE_UUID_Server和SLE_UUID_Client程序的基本结构,这篇介绍如何进行测试,从而实现两块星闪开发板之间的连接。服务器的构建在sdk根目录下(即src目录)打开集成终端台,执行python build.py-cws63-liteos-appmenuconfig命令,会出现选择弹窗。menuconfig这......
  • 织梦数据库配置文件修改数据库配置方法
    打开配置文件:使用专业的代码编辑器(如Dreamweaver、Notepad++等)打开 /data/common.inc.php 文件。修改数据库配置:根据实际情况修改以下变量:<?php//数据库连接信息$cfg_dbhost='localhost';//数据库地址$cfg_dbname='data';//数据库名$cfg_dbuse......
  • Revit Server的注意要配置说明
    可以执行多项检查来验证RevitServer是否正常运行或确定问题的原因:确认IIS管理器中显示以下服务(“开始”—>“运行intemgr”):   AdminService####(这构成列出的三个RevitServerAdministrator服务之一)。   LocalService####(这负责Accelerator功能)。   ModelSe......