![如何将某些路径的 HTTP 重定向到 HTTPS,但不重定向到其他路径?](https://linux22.com/image/726015/%E5%A6%82%E4%BD%95%E5%B0%86%E6%9F%90%E4%BA%9B%E8%B7%AF%E5%BE%84%E7%9A%84%20HTTP%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20HTTPS%EF%BC%8C%E4%BD%86%E4%B8%8D%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%85%B6%E4%BB%96%E8%B7%AF%E5%BE%84%EF%BC%9F.png)
对于给定的 vhost,我想要将一些路由/路径/URI 重定向到 HTTPS,同时允许其他路由/路径/URI 在 HTTP 上请求。
具体来说,我想允许通过 HTTP 请求 Artifactory 包,但要求通过 HTTPS 访问 Web UI。
我怎样才能做到这一点?
答案1
首先,确保您的server
块正在监听端口 80 和 443 上的请求。然后包含一个条件$scheme
和一个永久的rewrite
。
因此,要强制/webapp
(其下的任何内容) 使用 HTTPS,您可以使用:
server {
listen *:443 ssl;
listen *:80;
server_name www.example.com;
if ($scheme != 'https') {
rewrite ^/(webapp(/.*)?)$ https://$http_host/$1 permanent;
}
# ...
}