nginx对特别的url实现https

有一个接口的系统 都是http的请求 我现在像把例如带有login passwd的url进行ssl ,例如app调用os.test.com/a/p/login的时候走https请求 但是其它的请求还是走http请求 现在用openssl配置了证书 私钥等 但是现在每个请求都走了https请求 如
server {

listen      443;
server_name  os.test.com;
ssl on;
ssl_certificate /etc/ngx/conf.d/server.crt;
ssl_certificate_key /etc/ngx/conf.d/server.key;
location / {
    proxy_pass http://127.0.0.1:9988;
}

}
这个应该怎么去修改

阅读 7.1k
2 个回答

你要分开写,先创建一个server专门处理https请求, 然后根据url反向代理过去就行了, 下面是代码:

处理非https请求,https请求反向代理出去

server {

listen      443;
server_name  os.test.com;
location / {

}

location ~* .(login|passwd)$ {
    proxy_pass http://127.0.0.1:9999
}

}

处理https请求

server{

listen 9999
server_name 127.0.0.1
ssl on;
ssl_certificate /etc/ngx/conf.d/server.crt;
ssl_certificate_key /etc/ngx/conf.d/server.key;
location / {
 
}

}

# http
server {
    listen 80;
    
    location /login {
        rewrite ^  https://$host$request_uri permanent;
    }
}

# https
server {
    listen 443;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题