仅针对 nginx 上的特定 url 使用 https 重定向

2024-02-09

我正在尝试让 https 与某些 url 一起使用。但似乎 https 无处不在。具体来说,我在 Nginx 上创建了 2 个虚拟主机。第一个虚拟主机的端口为 80,另一个虚拟主机的端口为 443,包含 SSL。现在我的网站,即domain.com适用于http和https,但这不是我想要的。我希望 https 能够处理我在 Nginx 虚拟主机中使用规则指定的一些 url。

主要问题是,当我尝试首先使用 http 获取我的主站点时,然后当我转到包含 https“secure_area”的 url 时,它工作正常。然而,每当我在网站的其他地方访问该链接时,https 就会继续在所有其他网址上运行。

这是我的 443 虚拟主机配置:

ssl_session_cache 共享:SSL:5m; add_header 严格传输安全“max-age=31536000;includeSubDomains”;

server {
        listen 443 ssl spdy;
        listen [::]:443 ssl spdy;
        #server_name www.mydomain.com;

        ssl_session_timeout 5m;
        root /vars/www/public_html/;
        index index.php index.html index.htm;
        ssl_certificate /path_to_ssl/certificate.pem;
        ssl_certificate_key /path_to_key/server.key;
        ssl_ciphers 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS';
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        location / {
        try_files $uri $uri/ /index.php;
        }

         location ~ \.php$ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
         }

         location ~ /\.ht {
                deny all;
        }

        # Serve static files directly
        location ~* \.(png|jpe?g|gif|ico)$ {
                expires 1y; access_log off; try_files $uri $uri/ @rewrite; gzip off;
        }
        location ~* \.(css)$ {
                expires 1d; access_log off;
        }
        location ~* \.(js)$ {
                expires 1h; access_log off;
        }
        location /secure_area/ {
        auth_basic            "Restricted";
        auth_basic_user_file  htpasswd;
        rewrite ^ https://$http_host$request_uri? permanent;
        }


    }

这是我的 80 虚拟主机配置:

server {
        listen 80 default_server;
        server_name mydomain.com;
        return 301 http://www.mydomain.com;
}

server {
        listen 80;
        server_name www.mydomain.com;
        root /vars/www/public_html/;
        index index.php index.html index.htm;

        location / {
        try_files $uri $uri/ /index.php;
        }
         location ~ \.php$ {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:8080;
         }
         location ~ /\.ht {
                deny all;
        }

            location /secure_area/ {
        rewrite ^ https://$http_host$request_uri? permanent;
        }

    }

万一没有人注意到,Nginx 正在作为 Apache 前端的反向代理

现在有人知道如何仅在某些网址上强制使用 https 吗?在我的例子中,如何在 secure_area 上强制使用 https,并在所有其他网址上强制使用 http?

Thanks


您可以告诉 SSL 服务器重定向回http如果访问任何其他 URL

server {
  listen 80;
  server_name example.com;
  # normal http settings
  location /secure_area/ {
    return 301 https://$http_host$request_uri$is_args$query_string;
  }
}
server {
  listen 443 ssl spdy;
  server_name example.com;
  # ssl settings;
  location /secure_area/ {
    #serve secure area content
  }
  location / {
    return 301 http://$http_host$request_uri$is_args$query_string;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅针对 nginx 上的特定 url 使用 https 重定向 的相关文章

随机推荐

  • JSF 中的应用程序作用域和 Spring 中的单例作用域之间的区别

    谁能解释一下 ApplicationScope JSF 和 Singleton Spring MVC 之间的区别 我有一个用 jsf 编写的应用程序 其中一个类使用应用程序范围 在转换为 spring 时 我使用了 Singleton 范围
  • 简单的任务:连接到数据库,执行存储过程,断开连接

    我不一定需要从 VBScript 向存储过程传递任何变量 我只需要在服务器上运行存储过程 我还没有找到任何明确的示例来说明如何执行此操作 只有很多人解释如何将变量从 SP 传递回 VBScript 任何帮助将不胜感激 看起来我必须打开一个连
  • Google Colab 消耗过多互联网数据

    最近 google colab 消耗了太多的互联网数据 单笔记本 6 小时训练约 4GB 可能是什么问题 是的 我有同样的问题 它通常工作正常 但互联网数据突然激增 检查这个 https i stack imgur com Ms9QI pn
  • ViewModel 在视图中无法识别

    我在不同项目 类库 中的视图模型 我添加了参考 但是当我从我的 mvc4 视图中调用它时 例如 model Fancy Management Model Home IndexModel 查看未识别它 我不知道是什么问题 我的视图如下所示 m
  • 控制 Kubernetes 中单个 pod 中容器终止的顺序

    我的一个容器内有两个容器 第一个是我的应用程序容器 第二个是 CloudSQL 代理容器 基本上我的应用程序容器依赖于这个 CloudSQL 容器 问题是 当 pod 终止时 CloudSQL 代理容器首先终止 并且仅在几秒钟后我的应用程序
  • 从命令行启动时出现 MacVim 颜色问题

    我对 Vim 比较陌生 到目前为止一直在使用它 没有出现任何问题 我要么从我的扩展坞启动 MacVim 要么使用mvim从命令行 到目前为止效果很好 但现在我遇到了一个问题 没有明显的原因 从命令行启动 MacVim 开始创建一个所有颜色都
  • 在Java中忽略你自己的UDP广播

    在我的程序中 我发送 UDP 广播并对它们做出反应 我需要一种方法来忽略 UDP 广播I发送出去 但对那些不是来自我的机器的做出反应 我确实尝试使用 if NetworkInterface getByInetAddress packet g
  • Vue JS - 访问组件内的根计算属性

    我正在尝试从根 Vue 实例访问计算属性并在组件内部访问它 这 p class currency 在组件模板外部输出的元素正确输出 currency 但是当尝试访问组件内部的 currency 时 不会输出任何内容 我尝试过将货币设置为道具
  • 使用 R 在坐标系中绘制节点和边

    我实施了FR测试here http itee uq edu au zxf papers ACMMM08 distributionn pdf现在我想通过可视化 R 中生成的最小生成树来测试它 顶点和边应该在坐标系中绘制 此外 我想为每个点设置
  • MongoDB 嵌入 Java

    我从文档中得到的是 它在其他计算机上作为单独的进程运行 我可以使用 java 的 mongo db 客户端驱动程序与它进行通信 并且我可以执行正常操作 但我怀疑我是否可以在我的java应用程序中使用MongoDB作为嵌入式数据库 我的意思是
  • 带有 UIImage 的 Swift 游乐场

    我正在使用 Xcode 6 并且正在尝试重新创建在会话 401 Xcode 6 中的新增功能 期间演示的代码 我已将图像添加到 Images xcassets 称为 Sample 并在游乐场文件中我尝试访问此图像 如演示的那样 我的代码如下
  • 为什么 React devtools Profiler 不向我显示组件属性?

    我开始学习React的优化 并看到一些学习资源 在它们上 我可以在探查器中看到组件道具 但在我的 Profiler 中 我没有看到任何道具 为什么 如何在 Profiler 中查看当前渲染组件的 props A make screensho
  • 方法:python-pdfkit 将网页(JS生成)转换为PDF

    views py def download as pdf request some stuff function call to get updated with data and JS template and render it ret
  • Laravel Eloquent:SQL 注入预防是自动完成的吗?

    给出示例代码 Message是一个雄辩的模型 public function submit Request request this gt validate request name gt required email gt require
  • 从 cypress 中的函数返回一个值[重复]

    这个问题在这里已经有答案了 import StudentDetails from Department let studentInfo new StudentDetails let studName any it Get Student N
  • 为什么我的 Qt 4.5 应用程序在 Windows 下打开控制台窗口?

    我一直在 Linux 下使用 Qt Creator 4 5 我的应用程序在 Linux 下构建得很好 但如果我在 Windows 中构建 该应用程序总是在启动时打开一个控制台窗口 我可以阻止它这样做吗 我正在使用默认的 MinGW 设置进行
  • 如何提高JPictureBox大图像的绘制速度?

    我有一个 JPictureBox 从 java awt Component 扩展 请参阅此处的代码http pastebin com SAJc6Sht http pastebin com SAJc6Sht 但只有在没有图像拉伸的情况下它才有
  • 撤销对表 pg_proc 上 postgresql 中不起作用的特定列的访问

    我的目标是仅允许特定用户执行特定模式中的函数 按名称列出可用的函数 但看不到函数的源代码或列出其他模式 通过执行以下操作 无需列出可用函数名称即可实现上述目的 首先创建一个测试用户角色 CREATE ROLE test user WITH
  • Java 做 while, while

    当我运行此代码时 我可以期待什么行为 do while testA do stuff while testB 它的行为会像 do while testA do stuff while testB Or if testA do do stuf
  • 仅针对 nginx 上的特定 url 使用 https 重定向

    我正在尝试让 https 与某些 url 一起使用 但似乎 https 无处不在 具体来说 我在 Nginx 上创建了 2 个虚拟主机 第一个虚拟主机的端口为 80 另一个虚拟主机的端口为 443 包含 SSL 现在我的网站 即domain