gpt4 book ai didi

将除一个位置之外的所有流量重定向到 SSL

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

我有一个 nginx 服务器正在运行,为我的网站提供服务。出于安全原因,所有连接都重定向到 SSL。

但是,我一直在拼命寻找如何从该重定向中排除一个位置。我已经尝试过重写、重定向、proxy_pass 等,但它似乎不起作用。

我不想(301 或 302)重定向我的站点,我只希望 SSL 是可选的。各种类型文件(js、php、html)的位置。

例如

server {
listen 80;
server_name example.com
root /var/www/example;

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

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

# other rules...
}

server {
listen 443;
server_name example.com
root /var/www/example;

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

# other rules...
}

不起作用。

我也尝试过使用 redirectrewrite 而不是 try_files,但一点运气都没有。问题是,我不希望流量被重定向、重写或代理,我只希望 nginx 传递 example.com/unsafe 上的所有请求

我得到的只是一堆 404 和 502。

我做错了什么?

干杯

最佳答案

对于正常的 http 连接(在端口 80 上)和 https SSL 连接(在端口 443 上),您应该有单独的服务器 block 。

server {
listen 80;
server_name your-domain.com
root /var/www/;

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

# your other rules...
}

server {
listen 443;
server_name your-domain.com
root /var/www/;

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

# your other rules...
}

修改后的代码:

如果您希望站点上的所有文件都使用 https 连接(SSL,端口 443)EXCEPT /unsafe 目录中的那些文件,这就是您的服务器阻止的内容应该看起来像:

# This server block handles all requests on port 80 and serves only files inside
# the /unsafe directory. Everything else is redirected to an SSL connection on
# port 443.

server {
listen 80;
server_name your-domain.com
root /var/www/;

# only serve requests to files in the /unsafe directory
location /unsafe {
try_files $uri $uri/ =404;
}

# all other locations redirect to https connection
location / {
return 301 https://your-domain.com$request_uri;
}

# this location block proxies requests for PHP files to
# your fcgi php processor
location ~ /unsafe/.*\.php$ {
try_files $uri =404;
# your fcgi rules here...
}

# your other rules...
}


# This server block handles all SSL (port 443) connections.

server {
listen 443;
server_name your-domain.com
root /var/www/;

location / {
try_files $uri $uri/ =404;
}

# this location block proxies requests for PHP files to
# your fcgi php processor
location ~ \.php$ {
try_files $uri =404;
# your fcgi rules here...
}

# your other rules...
}

关于将除一个位置之外的所有流量重定向到 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25006201/

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