如何在NGINX中将特定HTTPS URI重定向至HTTP?
实现NGINX特定HTTPS URI重定向到HTTP
没问题,这在NGINX里只需要简单配置就能搞定,核心思路是针对目标URI单独写重定向规则,完全不影响其他路径的正常访问。
具体配置步骤
- 找到你配置HTTPS的
server块(就是监听443端口的那个配置块),在里面添加以下规则:
server { listen 443 ssl; server_name aaa; # 替换成你的实际域名 # 这里保留你的HTTPS相关配置,比如ssl_certificate、ssl_certificate_key等 # 精确匹配/bbb这个URI,触发重定向到HTTP location = /bbb { return 301 http://$host$request_uri; } # 你的其他业务配置,比如默认的根路径转发或代理规则 location / { # 比如 proxy_pass http://your_backend; 或者 root /path/to/static/files; } }
关键配置说明:
location = /bbb:用=做精确匹配,只有当请求的URI正好是/bbb时才触发规则,不会误匹配/bbb/xxx这类子路径return 301 http://$host$request_uri:返回301永久重定向(如果是临时重定向需求可以换成302),$host会自动读取当前请求的域名,$request_uri会完整保留原请求的URI和参数(比如原请求是https://aaa/bbb?param=123,重定向后就是http://aaa/bbb?param=123)
如果需要匹配所有以
/bbb开头的路径(比如/bbb/ccc、/bbb/ddd),可以把location规则改成:
location ^~ /bbb { return 301 http://$host$request_uri; }
^~表示优先匹配这个前缀路径,不会被其他正则location规则干扰。
让配置生效
修改完配置后,执行以下命令重启NGINX即可:
sudo nginx -s reload
这样就只会把https://aaa/bbb(或你指定的子路径范围)重定向到HTTP,该主机下的其他URI依然保持HTTPS访问不受影响。
内容的提问来源于stack exchange,提问作者WANGZeHuai
相关产品推荐
相关产品推荐

