這是我的環境:
- 導軌
- 愛訊
- Next.js
- AWS EC2
- Nginx
- 韋爾塞爾
我在生產環境中有兩個域。
一個是讓我們說它fuga.com是用導軌制成的并包含一些頭版。
另一個hoge.com是用 next.js 制作的。
hoge.comfuga.com通常使用 http 請求
獲取資料。
但是,如果我fuga.com/users_data使用瀏覽器訪問,我會看到所有用戶資料。
因為 api 是全球性的?
無論如何,就安全性而言,這確實很糟糕。
所以我想出了屏蔽除hoge.com. 我在nginx中配置:
server {
listen 80;
server_name fuga.com hoge.com;
root /var/www/xxx/current/public;
location / {
proxy_pass http://xxx;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
}
# ↓here↓
location /admin {
valid_referers none blocked server_names hoge\.com;
if ($invalid_referer) { return 403; }
}
}
我想阻止/admin/~除hoge.com.
所以我用valid_referers none blocked.
從我的搜索來看,它是只能訪問的白名單。
但是我從 nginx 的訪問日志中得到了這個引數:
172.31.xx.xxx - - [10/May/2022:13:31:58 0000] "POST /admin/auth/sign_in/ HTTP/1.1" 404 188 "https://hoge.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xxx.0.xxxx.54 Safari/xxx.36" "106.xx.xx.xxx" "-"
狀態碼是404。
所以我嘗試allow而不是valid_referers喜歡:
...
location /admin {
allow 172.xx.xx.xxx;
deny all;
}
但是 nginx 回傳:
172.xx.x.xxx - - [10/May/2022:13:34:12 0000] "POST /admin/auth/sign_in/ HTTP/1.1" 403 187 "https://hoge.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xxx.x.xxxx.54 Safari/xxx.xx" "xxx.xx.xx.xxx" "-"
我不明白發生了什么......
我確定這完全是nginx設定的問題。
因為如果我洗掉allow它valid_referers會正常作業。
我該如何解決這個問題..?
uj5u.com熱心網友回復:
每個請求都以特定位置結束并使用該位置內容處理程式。你不能做類似的事情
location / {
... some settings ruleset
}
location /admin {
... additional settings ruleset
}
并期望該/admin/...請求將使用組合設定規則集。您的第一個位置使用使用指令http_proxy_module宣告的內容處理程式proxy_pass(其他內容處理程式指令示例是fastcgi_pass、uwsgi_pass等)。由于在您的第二個位置沒有宣告任何內容處理程式,nginx 將為使用該位置處理的請求使用本地內容處理程式(換句話說,將嘗試使用某個本地檔案來服務請求),并且由于這樣的本地檔案不存在,給你一個 HTTP404 Not Found回應。您可以使用您的第二個位置復制您的主要位置內容(不是最好的方法),也可以使用其他一些解決方案,例如map塊:
map $uri $deny {
~^/admin $invalid_referer;
# default value will be an empty string, so we can omit "default '';" here
}
server {
...
location / {
if ($deny) { return 403; }
... rest of the configuration
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/472673.html
上一篇:使用Rails7和Taildwincss將圖片和卡片放在一起
下一篇:在Rails5中優化資料庫查詢
