廢話不說,直接上code
upstream test {
server 192.168.1.1;
}
server {
listen 80;
server_name room.scott.com;
location / {
proxy_pass http://test;
}
location /* {
return 403;
}
}
主要是想問,如何讓user輸入room.scott.com/
斜線後面的網址都回報403?
*字鍵,在這邊不代表全部的意思。
原本目的是想讓
room.scott.com/room1
room.scott.com/room2
room.scott.com
這三個url能通,其餘都回403
正努力看有無相關文件
https://segmentfault.com/a/1190000013267839
版上先進們,是否能協助指引一些方向,不勝感激
5/12(四) 更新目前處理方向
location = /room {proxy_pass http://test;}
location = /room2 {proxy_pass http://test;}
location / {proxy_pass http://test;}
經測試,因結合Jitsi緣故,故location /
不可阻擋
/
後面的參數,然後進行阻擋 (加入判斷式)解決方案:
server {
listen 80;
server_name room.scott.com;
location ~ /(room|room2) {proxy_pass http://172.16.16.1;}
location = / {proxy_pass http://172.16.16.1;}
location ~* /(css/|libs/|lang/|images/|sounds/|http-bind) {proxy_pass http://172.16.16.1;}
location / { return 403; }
}
location = /room1 {...}
location = /room2 {...}
location = / {...}
location / { return 403; }
那篇有些地方是有問題的。
像是 ^~ 說得很不清楚。
找了些資料,做了些實驗後的總結:
加修飾符(~ ~* ^~ =),優先度都會提高,=最高
只有~開頭的(~ ~*)能用正則表示法,其他都比對字串而已。
越上面的優先度越高。
唔,點進去掃了一下還蠻直覺的,但對於新手如何就不知道了
其實最好還是去看官方的
https://docs.nginx.com/nginx/admin-guide/web-server/web-server/
阿 ... 我資訊給的不夠齊全,是我思慮不周,拍謝
我原先是自建Jitsi Meet,但沒辦法控制房間數量,因此打算透過nginx,來允許特定URL訪問 (Jitsi只要後面加上房間名稱就能創建)
但如果寫 location / { return 403; }
就會導致這樣的結果,這部分應該是Jitsi Server那邊的問題
但只是想,有沒有辦法解決而已
location = /room {proxy_pass http://test;}
location = /room2 {proxy_pass http://test;}
location / {proxy_pass http://test;}
寫這樣就正常,但這樣前面兩行基本上就是可有可無的
目前改成轉址的方式,可以符合需求,只是需要保留原網址、隱藏新網址
server {
listen 80;
server_name room.scott.com;
location /room {rewrite ^/(.*)$ http://room.scott2.com/room redirect;}
location / { return 403; }
}
server {
server_name room.scott2.com;
location / {proxy_pass http://192.168.1.1;}
}
踏雪尋梅 不知道你要問什麼耶,建議問問題可以講一下前因後果
server {
listen 80;
server_name room.scott.com;
location ~ /(room|room2) {proxy_pass http://172.16.16.1;}
location = / {proxy_pass http://172.16.16.1;}
location ~* /(css/|libs/|lang/|images/|sounds/|http-bind) {proxy_pass http://172.16.16.1;}
location / { return 403; }
}
我這邊解開了!感恩!
好不容易搞懂,怕自己忘記的範例,這範例應該就看得很清楚了,而且可以直接放進nginx玩,也不用說太多廢話。
# 正則比對
location ~ /(login|room1|room2) {
set $test1 $1;
default_type text/html;
return 200 "<!DOCTYPE html><h2>${test1}</h2>\n";
}
# 排除正則比對,優先度比正則比對高,/login雖然符合上面的正則表示,但因為這條優先度高,會走這條
location ^~ /login {
default_type text/html;
return 200 "<!DOCTYPE html><h2>222</h2>\n";
}
# 精確比對,優先度比所有的高
location = / {
default_type text/html;
return 200 "<!DOCTYPE html><h2>index</h2>\n";
}
location / {
return 403;
}
這種的一般我會用 $uri 來處理。再搭配設定變數應用。
也就是將判斷可用跟運行是分開處理的。
我找時間設定一下看看。