Nginx 反向代理 (泛域名->泛域名,https,静态文件)
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. 静态文件处理
确保静态文件不会被提前捕获处理,避免影响反向代理的正常工作。
匹配优先级
- 精确匹配:如果有精确匹配的
location,Nginx 将优先使用它。 - 正则匹配:如果没有精确匹配,Nginx 会按照配置文件中的顺序检查正则表达式的
location,第一个匹配的正则表达式会被使用。 - 普通匹配:如果没有正则匹配,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
扩展
Nginx 反向代理 (泛域名->泛域名,https,静态文件)的更多相关文章
- windows2008 使用nginx 反向代理实现负载均衡解决HTTPS 证书问题
由于项目需要 负载均衡由NBL 转成nginx 反向代理.考虑都是https模块,所以证书成了个难题. 解决方案: 1.下载openssl(windows 安装包) 2.打开bin/下面的openss ...
- Tomcat多个项目部署,通过Nginx反向代理分别配置二级域名的流程
购买域名.示例:example.com 设置多个二级域名.如图: 配置tomcat文件: 修改tomcat/conf目录下的server.xml文件: 如下配置配置了3个容器,使用三个不同的端口. 请 ...
- 搭建Nginx反向代理做内网域名转发
由于公司内网有多台服务器的 http 服务要映射到公司外网静态 IP,如果用路由的端口映射来做,就只能一台内网服务器的 80 端口映射到外网 80 端口,其他服务器的 80 端口只能映射到外网的非 8 ...
- nginx反向代理:两个域名指向不同web服务端口
一台服务器上安装了zabbix服务和jumpserver服务,两个域名zabbix.xxxx.xxxx和jumserver.xxx.xxxx 一.编辑/etc/nginx/conf.d目录下nginx ...
- docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https
假设docker已经安装好了,如果没有安装,可以照着 5分钟安装docker教程. 一. 下载镜像 默认下载最新版本,如果想指定对应版本,可以用冒号后加版本,像这样mysql:5.7: docker ...
- Linux使用nginx反向代理。可实现域名指向特定端口
在配置80指向域名的时候出现端口占用,使用kill -9无法杀死端口,应使用下面的命令来杀死进程killall -9 nginx(使用完本命令需要再把配置过的配置文件重新启动.命令写在了PS下面)后在 ...
- Nginx反向代理匹配部分二级域名或二级目录配置
server { charset utf-; client_max_body_size 128M; # Add index.php to the list if you are using PHP i ...
- nginx反向代理tomcat 时,出现https redirect后变成http的问题解决方法
需要修改两个配置 1.nginx配置 location / { proxy_pass http://test-server; proxy_set_header Host $host; proxy_se ...
- nginx 反向代理及 https 证书配置
nginx 反向代理及 https 证书配置 author: yunqimg(ccxtcxx0) 1. 编译安装nginx 从官网下载 nginx源码, 并编译安装. ./configure --pr ...
- [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问
前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...
随机推荐
- 【转载】 Linux Hang Task 简介
原文地址: https://gohalo.me/post/linux-kernel-hang-task-panic-introduce.html --------------------------- ...
- WPF 使用MediaElement,但Source带https会抛出未引用对象实列
原因和解决办法 如果恰好使用了MediaElement,在调用的时候,会出现空异常 var uri = new Uri("https://xxxx.mp4", UriKind.Re ...
- Long Way to be Non-decreasing 题解
前言 题目链接:洛谷:CF. 题意简述 yzh 喜欢单调不降序列. 她有一个序列 \(a\),最初为 \(a_1, \ldots, a_n\),其中每个元素都在 \([1, m]\) 内. 她希望使序 ...
- 2023上海理工大学校内选拔赛A-D题
前言 不要在意标题,既然是随记,就随性点() 今天参加了2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)_ACM/NOI/CSP/CCPC/ICPC算法编程 ...
- 解决Windows突然自动重启卡logo
一般重启后或者卡logo我们需要查看日志 进入后查看日志 点击筛选当前日志 输入eventlog 找到重启的时间错误ID,记住这个事件ID 我们再次点击筛选当前日志页面 选择清除,点击确定 然后我们找 ...
- C语言实现url解析小实例
一.前言 前面一口君写了一篇关于url的文章: <一文带你理解URI 和 URL 有什么区别?> 本篇在此基础上,编写一个简单的用于解析url的小例子, 最终目标是解析出URL中所有的数据 ...
- 一文带你理解URI 和 URL 有什么区别?
当我们打开浏览器,要访问一个网站或者一个ftp服务器的时候,一定要输入一串字符串, 比如: https://blog.csdn.net/ 或者: ftp://192.168.0.111/ 这样我们就可 ...
- Linux驱动|cdev_init、cdev_alloc区别
这两个函数是字符设备初始化相关的内核函数. 要想了解这两个函数,必须要知道字符设备的架构,以及字符设备创建的流程. 关于字符设备可以参考下面这篇文章 <手把手教Linux驱动3-之字符设备架构详 ...
- Go 接收命令行参数
在 Go 语言中,可以使用标准库中的 os 包和 flag 包来接收和处理命令行参数. 使用 os 包 os.Args 是一个字符串切片,其中第一个元素是程序的名称,后续元素是传递给程序的命令行参数. ...
- 网站由http升级为https图文教程
网站由http升级为https图文教程 本文是基于凯哥个人网站由http升级为https的记录. 前提说明:凯哥网站在AliYun备案的.所以基于此创建的.如果是腾讯云备案的域名也是类似的. 名词解释 ...