ssl - Nginx 重定向到 SSL,特定 URL 除外

标签 ssl nginx

我想将所有访问我网站的流量重定向到 SSL,单个 URL 方案除外。我希望这个单一方案返回一个响应,表明网站的这个特定部分只能通过 SSL 直接访问。

我网站的 conf 文件目前部分看起来像这样,它可以很好地重定向所有流量:

server {
    listen 80;
    server_name sub.example.com;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    listen 443;
    ssl on;
    ssl_certificate /etc/nginx/ssl/12345.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;
    server_name sub.example.com;

    client_max_body_size 4G;

    # ....
}

我想这样做:

最佳答案

将服务器级别的重写移动到根位置,然后为 API 生成错误代码,为该状态代码设置错误页面,并将您的人类可读描述放在那里。 假设您返回 403,这似乎是合适的,那么湿得到这个:

root /path/to/webroot;
location / {
    return 301 https://$host$request_uri;
}

location /api/ {
    error_page 403 /api_direct.html;
    deny all;
}

我已经设置了根以便可以找到自定义错误页面,根据您的需要进行调整。

关于ssl - Nginx 重定向到 SSL,特定 URL 除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983233/

相关文章:

ruby - 安装 cocoapods 时出现 SSL 验证错误

email - Plesk 发送电子邮件 TLS 不可用

php - Nginx + php5-fpm 不显示 php 错误但 cli 显示错误

python - 当发送给它的查询太长时,uWSGI 似乎会中断

javascript - 在 javascript 服务器端连接 MySQL,无需使用 Node.js

ssl - OpenSSL 无法建立 SSL 连接,因为不支持的协议(protocol)

ssl - Gitlab 致命 : unable to access '.......' SSL Certificate problem: unable to get issuer certificate

Apache 代理到 Tomcat 强制 SSL

ruby-on-rails - 如何配置nginx+Unicorn避免超时错误?

python - Locust 负载测试给了我 ChunkedEncodingError