http - NGiNX - 重定向到 https 无法通过最初请求的子域重写/替换正确的通配符字符
问题描述
我正在将NGiNX
服务器用于我的一个application
.
我的应用领域是,example.com
我有一种要求在动态基础上生成子域。
所以我已经配置了 NGiNX 类似的东西以满足子域(业务)的要求。
我的 NGiNX 配置也是如此,
server {
listen 80;
server_name *.example.com;
#access_log off;
.....
location / {
# redirect to secure site
return 301 https://$server_name$request_uri; # Here it's redirecting me along with * only instead of sub-domain name
}
.....
}
上述配置完美运行,但HTTP
不适用于HTTPS
.
我正在审查以下内容,
我预期的 URL 是,https://today.example.com
在成功重定向到安全(301)通道后。
它正在将我重定向到这里,https://%2A.example.com/abc?abc=xyz (%2A is *, looks encoding scheme rewrite * -> %2A instead of today)
而不是它,它应该是 https://today.example.com/abc?abc=xyz
那么,如何克服这种处理 *(wildcard char) 以便成功重定向。
任何帮助都会非常明显!
解决方案
您需要$host
而不是$server_name
在重定向语句中。$server_name
是nginx中配置的名称,即*.example.com
. $host
而是客户端用于访问服务器的名称,并且在绝对 URI 或Host
标头中给出,即today.example.com
:
return 301 https://$host$request_uri;
推荐阅读
- keystonejs - 在 Keystone.js 中使用多个模型作为用户
- javascript - How do I get this cookie banner to work?
- python-3.x - pip install docx2html 抛出错误
- javascript - 更改选项的值属性时检测事件
- r - 根据 R 中列出数值的列拆分行
- java - 如何使用 java 对 Web 服务进行负载测试?
- h2o - 持久化 h2o mojo 时出错(版本 3.20.0.1)
- python - 对 pandas 列执行条件操作
- javascript - 如何固定条形图.js中每个条形列的宽度?
- java - Box2D libgdx 联系人监听器