目录
基础概念
首页 运维 nginx nginx多域名转发如何实现

nginx多域名转发如何实现

May 13, 2023 pm 12:58 PM
nginx

基础概念

DNS

DNS是Domain Name System的缩写,即域名系统。DNS是internet的一项服务,一般叫域名服务或者域名解析服务,主要是提供网站域名与ip地址的相互转换的服务。

域名和IP的对应关系

域名与IP地址之间是呈一一对应的关系,但多个域名可以对应同一个IP地址。就像一个人的姓名和身份证号码之间的关系,显然记忆人的名字要比身份证号容易的多。IP地址是网络上标识用户站点的数字地址,为了简单好记,采用域名来代替IP地址表示站点地址,DNS讲域名解析成IP地址,使其一一对应。

DNS工作原理

在Internet上,一个域名要由两台域名服务器提供“权威性的”域名解析。如果是国际域名,域名注册管理机构就是Interinc,如果是国内域名,域名注册管理机构就是CNNIC。所有的域名必须在两个注册机构上注册才能正常使用。

比如,你现在要访问一个网站,例如www.baidu.com,你的电脑需要知道这个站点的IP地址是多少才能访问。于是它会自动向您所在区域的“主控DNS”服务器发出询问,即“www.baidu.com”的IP是多少?如果该服务器上没有该域名的记录,它会到上一级的DNS去查找,一直重复进行直到找到为止,如果到最后一级仍然没有找到。此时会到权威性的DNS上查找,然后把对应的ip信息返回给你的电脑。你的电脑就可以与www.baidu.com对应的服务器进行通信了。这样一级一级的查询被称为“递归式”的查询。

hosts文件

hosts文件是本地的一个无后缀的系统文件,需要管理员权限才能修改其内容。从上面DNS的解析过程可以看出,每次DNS解析可能会经过很多DNS服务器的转发最终才能获取到真正的IP地址,这样会很没效率。所以在计算机的本地也有一个DNS解析文件,即hosts文件。当你把hosts中的 www.baidu.com指向正确的百度服务器地址的时候,电脑会与正确的服务器进行交互。如果本地hosts,没有配置映射关系,那么它会到局域网的DNS服务器寻找对应的映射关系。如果仍然没有,它就会在本地对应节点的DNS去查找,重复上面所说的步骤。

nginx反向代理

代理:其实就是中介,A和B本来可以直连,但是在A和B之间加入了C。 正向代理

即上面的dns,它代理的是客户端,为客户端收发请求,对server断是透明的。用浏览器访问 http://www.google.com 时,被残忍的block,于是你可以在国外搭建一台代理服务器,让代理帮我去请求google.com,代理把请求返回的相应结构再返回给我。

nginx多域名转发如何实现

反向代理

即nginx的一个功能,它代理的是服务器,它为server端转发请求,对client端是透明的。当我们请求 www.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器,用来做负载均衡。

nginx多域名转发如何实现

nginx加hosts做多域名映射

比如你的两个应用的域名是a.test.com和b.test.com。

找到C:WindowsSystem32driversetc目录下的hosts文件,用超级管理员权限打开。在文件尾部加入

a.test.com 127.0.0.1
b.test.com 127.0.0.1

修改nginx.conf文件(由于nginx.conf的配置很多,这里只是用最简单的事例说明)在http的{}内部加入server。加入内容如下:

server {
  listen 80;
  server_name a.test.com;   //填入自己项目对应的域名
  charset utf-8;
  error_log logs/error.log;
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:8888; //填入自己项目的ip加端口号(此处的项目没有工程上下文,只有端口号)
  }
}

server {
  listen 80;
  server_name b.test.com;   //填入自己项目对应的域名
  charset utf-8;
  error_log logs/error.log;
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:8889; //填入自己项目的ip加端口号(此处的项目没有工程上下文,只有端口号)
  }
}

修改完以后,再重新加载nginx配置文件

nginx.exe -s reload

以上是nginx多域名转发如何实现的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

如何用PHP开发问答社区平台 PHP互动社区变现模式详解 如何用PHP开发问答社区平台 PHP互动社区变现模式详解 Jul 23, 2025 pm 07:21 PM

1.PHP开发问答社区首选Laravel MySQL Vue/React组合,因生态成熟、开发效率高;2.高性能需依赖缓存(Redis)、数据库优化、CDN和异步队列;3.安全性必须做好输入过滤、CSRF防护、HTTPS、密码加密及权限控制;4.变现可选广告、会员订阅、打赏、佣金、知识付费等模式,核心是匹配社区调性和用户需求。

是什么导致NGINX中的'太多打开文件”错误? 是什么导致NGINX中的'太多打开文件”错误? Jul 05, 2025 am 12:14 AM

当Nginx出现“Toomanyopenfiles”错误时,通常是因为系统或进程达到了文件描述符限制。解决方法包括:1.提高Linux系统的软硬限制,在/etc/security/limits.conf中设置nginx或运行用户的相关参数;2.调整Nginx的worker_connections值以适应预期流量,并确保重载配置;3.增加系统级文件描述符上限fs.file-max,编辑/etc/sysctl.conf并应用更改;4.优化日志和资源使用,减少不必要的文件句柄占用,例如使用open_l

如何用Mac搭建PHP Nginx环境 MacOS配置Nginx与PHP服务组合 如何用Mac搭建PHP Nginx环境 MacOS配置Nginx与PHP服务组合 Jul 25, 2025 pm 08:24 PM

Homebrew在Mac环境搭建中的核心作用是简化软件安装与管理。1.Homebrew自动处理依赖关系,将复杂的编译安装流程封装为简单命令;2.提供统一的软件包生态,确保软件安装位置与配置标准化;3.集成服务管理功能,通过brewservices可便捷启动、停止服务;4.便于软件升级与维护,提升系统安全性与功能性。

如何在NGINX中启用HTTP/2或HTTP/3支持? 如何在NGINX中启用HTTP/2或HTTP/3支持? Jul 02, 2025 am 12:36 AM

要启用Nginx的HTTP/2或HTTP/3支持,需满足前提并正确配置;HTTP/2需Nginx1.9.5 、OpenSSL1.0.2 及HTTPS环境;配置时添加--with-http_v2_module模块,修改监听语句为listen443sslhttp2;并重载服务;HTTP/3基于QUIC,需使用第三方模块如nginx-quic,编译时引入BoringSSL或OpenSSLQUIC分支,并配置UDP监听端口;部署时常见问题包括ALPN未启用、证书不兼容、防火墙限制及编译错误,建议优先采用

如何利用Kubernetes保持PHP环境一致 生产和本地容器配置标准 如何利用Kubernetes保持PHP环境一致 生产和本地容器配置标准 Jul 25, 2025 pm 06:21 PM

要解决PHP环境在本地与生产之间不一致的问题,核心在于利用Kubernetes的容器化与编排能力实现环境统一,具体步骤如下:1.构建统一的Docker镜像,包含所有PHP版本、扩展、依赖和Web服务器配置,确保开发与生产使用同一镜像;2.使用Kubernetes的ConfigMap和Secret管理非敏感与敏感配置,通过卷挂载或环境变量注入,实现不同环境配置的灵活切换;3.通过统一的Kubernetes部署定义文件(如Deployment、Service)保障应用行为一致性,并纳入版本控制;4.

@在位置块(命名位置)中是什么意思? @在位置块(命名位置)中是什么意思? Jul 09, 2025 am 01:49 AM

在NGINX配置中,location块内的@符号用于定义命名位置,这些是仅限内部使用的端点,不能直接由客户端请求匹配,它们通常通过error_page、try_files或rewrite指令调用。1.命名位置以@开头,如location@notfound,不会响应直接请求,而是从配置其他部分触发;2.常用于自定义错误处理、内部路由和后端代理回退;3.例如,结合try_files实现静态文件不存在时转发到@backend;4.注意事项包括:不可直接访问、避免命名冲突、使用描述性名称。命名位置可包含

如何用PHP开发电商后台变现 PHP电商系统架构与盈利策略 如何用PHP开发电商后台变现 PHP电商系统架构与盈利策略 Jul 25, 2025 pm 06:33 PM

1.PHP电商后台主流框架有Laravel(开发快、生态强)、Symfony(企业级、结构稳)、Yii(性能优、适合标准化模块);2.技术栈需搭配MySQL Redis缓存 RabbitMQ/Kafka消息队列 Nginx PHP-FPM,并考虑前后端分离;3.高并发架构应分层模块化、数据库读写分离/分库分表、用缓存和CDN加速、异步处理任务、负载均衡与Session共享、逐步微服务化并建立监控告警体系;4.多元变现路径包括商品差价或平台佣金、站内广告、SaaS订阅、定制开发与插件市场、API接

在重新加载之前,如何测试我的NGINX配置是否为语法错误? 在重新加载之前,如何测试我的NGINX配置是否为语法错误? Jul 13, 2025 am 01:06 AM

修改Nginx配置后应先测试语法再重载服务。1.使用nginx-t检查配置文件语法,若提示“syntaxisok”和“testissuccessful”则表示无误;若有错误会显示具体问题行。2.若配置文件权限较高,需使用sudonginx-t执行。3.确认测试的是实际加载的配置路径,可通过nginx-t-c/path/to/your/nginx.conf指定路径,或通过ps-ef|grepnginx查看主进程使用的配置文件。4.测试通过后执行sudonginx-sreload重载服务使新配置生效

See all articles