Nginx 反向代理配置指南 (泛域名 -> 泛域名, HTTPS, 静态文件)

完整版

server
{
# 监听80端口
listen 80;
listen 443 ssl http2;; # ...... # 泛域名
server_name *.{fromName}.com; # 获取 "*" 参数
set $subdm '';
if ($host ~* "(.*)\.{fromName}\.com") {
set $subdm $1;
} location / {
# DNS
resolver 114.114.114.114;
# 设置请求头
proxy_set_header Host $subdm.{toName}.cn;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header X-Accel-Buffering;
# 跳转
proxy_pass https://$subdm.{toName}.cn;
# 带入ssl信息
proxy_ssl_server_name on;
proxy_ssl_name $subdm.{toName}.cn;
# 超时设置
proxy_read_timeout 1800s;
}
}

1. 泛域名配置

在 Nginx 的 server 块中使用 server_name 参数和 * 通配符来配置泛域名。例如,server_name *.{fromName}.com 表示 {fromName}.com 的所有二级域名。

2. 获取二级域名变量

可以使用正则表达式和变量来获取二级域名:

if ($host ~* "(.*).{fromName}.com") {
set $subdomain $1; # 其中 $1 表示匹配的二级域名
} location / {
proxy_pass https://$subdomain.{toName}.cn;
}

3. 解决指向 HTTPS 时的 502 错误问题

3.1 DNS 解析问题

当跳转路径为域名时,确保两边的 Nginx 都配置了相同的 DNS。示例如下:

resolver 144.144.144.144;

3.2 SSL 问题

3.2.1 跳转路径为 IP 时

添加以下配置以传递本服务器的 SSL 信息到跳转的域名:

proxy_ssl_server_name on;

3.2.2 跳转路径为域名时

添加以下配置:

proxy_ssl_name $subdomain.{toName}.cn;
proxy_set_header Host $subdomain.{toName}.cn;

4. 静态文件处理

确保静态文件不会被提前捕获处理,避免影响反向代理的正常工作。

匹配优先级

  1. 精确匹配:如果有精确匹配的 location,Nginx 将优先使用它。
  2. 正则匹配:如果没有精确匹配,Nginx 会按照配置文件中的顺序检查正则表达式的 location,第一个匹配的正则表达式会被使用。
  3. 普通匹配:如果没有正则匹配,Nginx 会使用最长匹配的普通 location

示例配置

处理图片等静态资源

location ~* .(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
error_log off;
access_log off;
}

处理 JS 和 CSS 文件

location ~* .(js|css)?$ {
expires 12h;
error_log off;
access_log off;
}

参考

域名反向代理

nginx https 502 DNS相关

nginx https 502

扩展

proxy介绍

expires介绍

Nginx 反向代理 (泛域名->泛域名,https,静态文件)的更多相关文章

  1. windows2008 使用nginx 反向代理实现负载均衡解决HTTPS 证书问题

    由于项目需要 负载均衡由NBL 转成nginx 反向代理.考虑都是https模块,所以证书成了个难题. 解决方案: 1.下载openssl(windows 安装包) 2.打开bin/下面的openss ...

  2. Tomcat多个项目部署,通过Nginx反向代理分别配置二级域名的流程

    购买域名.示例:example.com 设置多个二级域名.如图: 配置tomcat文件: 修改tomcat/conf目录下的server.xml文件: 如下配置配置了3个容器,使用三个不同的端口. 请 ...

  3. 搭建Nginx反向代理做内网域名转发

    由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 8 ...

  4. nginx反向代理:两个域名指向不同web服务端口

    一台服务器上安装了zabbix服务和jumpserver服务,两个域名zabbix.xxxx.xxxx和jumserver.xxx.xxxx 一.编辑/etc/nginx/conf.d目录下nginx ...

  5. docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https

    假设docker已经安装好了,如果没有安装,可以照着 5分钟安装docker教程. 一. 下载镜像 默认下载最新版本,如果想指定对应版本,可以用冒号后加版本,像这样mysql:5.7: docker ...

  6. Linux使用nginx反向代理。可实现域名指向特定端口

    在配置80指向域名的时候出现端口占用,使用kill -9无法杀死端口,应使用下面的命令来杀死进程killall -9 nginx(使用完本命令需要再把配置过的配置文件重新启动.命令写在了PS下面)后在 ...

  7. Nginx反向代理匹配部分二级域名或二级目录配置

    server { charset utf-; client_max_body_size 128M; # Add index.php to the list if you are using PHP i ...

  8. nginx反向代理tomcat 时,出现https redirect后变成http的问题解决方法

    需要修改两个配置 1.nginx配置 location / { proxy_pass http://test-server; proxy_set_header Host $host; proxy_se ...

  9. nginx 反向代理及 https 证书配置

    nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...

  10. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

随机推荐

  1. OpenALMusicPlayer.cpp:164:22: error: invalid conversion from ‘char’ to ‘const char*’ [-fpermissive]

    编译时报错: OpenALMusicPlayer.cpp:164:22: error: invalid conversion from 'char' to 'const char*' [-fpermi ...

  2. 7月30日CSP-S模拟赛赛后总结

    7月30日模拟赛赛后总结 \[7月30日 \ \ 模拟赛 \ \ 赛后总结 \\ 2024年7月30日 \\ by \ \ \ hcy \] 洛谷同步:点我 一.做题情况 第一题比赛 \(100pts ...

  3. 调用lcd屏输出德国国旗

    /************************************************* * * file name:color.c * author :momolyl@126.com * ...

  4. CKS考试心得分享

    CKS证书 考试相关 考试报名准备 CKS考试和CKA考试一样,已经开放中国大陆的考试.但区别是CKS目前没有中文题目,考试都是英文题目,唯一区别是CKS中文考试是中文老师监考,仅此而已.因此,建议C ...

  5. kubernetes负载感知调度

    背景 kubernetes 的原生调度器只能通过资源请求来调度 pod,这很容易造成一系列负载不均的问题, 并且很多情况下业务方都是超额申请资源,因此在原生调度器时代我们针对业务的特性以及评估等级来设 ...

  6. Android 存储概览

    存储区​ Android 一开始就将存储区分为内部存储和外部存储,对应手机自带的存储和可插拔的 sd 卡(可类比于 PC 的硬盘和 U盘). 内部存储容量有限,Google 建议 App 数据尽量存储 ...

  7. Go runtime 调度器精讲(三):main goroutine 创建

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 回顾下 上一讲 的内容.主线程 m0 蓄势待发,准备干活.g0 为 m0 提供了执行环境,P 和 m0 绑定,为 m0 提供活,也就是 goro ...

  8. SQL Server – History Table (Audit/Archive Table)

    前言 续上一篇的 Soft Delete 后, 我们继续来看看 History Table (Audit/Archive Table). Archive Table 市场上有了这样叫, 但我觉得它比较 ...

  9. Maven高级——继承与聚合

    继承与聚合 聚合 聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合 聚合工程:通常是一个不具有业务功能的"空"工程(有且仅有一个pom文件) 作用:使用聚合工程可以将 ...

  10. 【赵渝强老师】Redis的慢查询日志

    Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作.慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息 ...