gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:38 24 4
gpt4 key购买 nike

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

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

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

ssl_session_cache 共享:SSL:5m;add_header Strict-Transport-Security "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 前端充当反向代理

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

谢谢

最佳答案

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

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;
}
}

关于apache - 仅针对 nginx 上的特定 url 使用 https 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22397838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com