location / {
proxy_pass https://1.123.com;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host "1.123.com";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host "1.123.com";
proxy_set_header X-Forwarded-Port $server_port;
}
#set $limit 1;
req_status server;
location ~.*\.(png|jpg) {
allow all;
}
location ~ {
deny all;
return 403;
}
Tengine-2.3.2
配置反向代理之后,只允许访问特定某路径或特定文件后缀。某特定路径不是固定的 URL,其中 1-2 个目录是固定的。
目前想到的是只允许访问某后缀。上方最后两个 location 是修改之后的,除了访问.png 和.jpg 的文件路径是 404 以外(不能访问源文件,配置应该是生效了,如果可以访问指定的后缀,这个问题应该就可以解决了),访问其他路径都是 403。
谢谢各位 V 友可以查看此贴。
1
ibirdyuan 2019-11-28 23:00:54 +08:00
没设置好 root 吧,看下 nginx 的 root 关键字?
|
2
daimaosix OP |
3
ibirdyuan 2019-11-28 23:42:30 +08:00
@daimaosix 额,我才理解你的问题。。。
1. location 是有优先级的,根据你的 url 只会走到一个 location 块里面 2. 因为你配置了.png 和.jpg 所以找了本地目录,就 404 了,~ 的优先级高于 /, 所以就 403 了 |
4
eason1874 2019-11-29 00:00:47 +08:00 1
是不是这个意思啊?
``` set $proxyurl "https://1.123.com$uri"; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host "1.123.com"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host "1.123.com"; proxy_set_header X-Forwarded-Port $server_port; location / { # 默认屏蔽 deny all; } location ~* \.(png|jpg)$ { # .png .jpg 请求转发到后端 proxy_pass $proxyurl; } location /images/ { # /images/ 目录路径请求也转发到后端 proxy_pass $proxyurl; } ``` |
5
daimaosix OP @eason1874 是这个效果老哥,测试了一下没问题,但是我不能写 set $proxyurl "https://1.123.com$uri";
因为第一个 location 的配置不能自定义,所以我直接写了: location ~* \.(png|jpg)$ { proxy_pass https://1.123.com; } 如果是这样的话,第一个 location 的配置是不是就没用了呢? |
7
eason1874 2019-11-29 09:22:58 +08:00 1
@daimaosix #5 我不知道你说的第一个 location 是指哪个。每个 location 段的 proxy_pass 都可以自定义,我设置个变量只是为了方便统一使用一个。
但是需要注意,如果在一个目录 location 里 proxy_pass 到一个网站根目录的话,访问路径和转发路径是不一样的,这个你自己试下就知道了。 |
8
wangyzj 2019-11-29 12:46:16 +08:00
location 用正则控制,那么除了满足条件的都会到 root
然后 nginx 启动用户假设 www 把 root 指向一个目录,权限改成 700,用户为 root 那么其他不满足条件的都 403 了 |