Nginx之proxy_pass指令url反斜杠作用
随风飘扬 学习 2021年04月22日10:43 1336
在nginx中配置proxy_pass代理转发时;其后面的url中反斜杠/ 的匹配处理时常出现意想不到的问题发生;以下说明两种情况;如果在proxy_pass后面的url加/;表示绝对根路径; 如果在proxy_pass后面的url没有/;表示相对路径;把匹配的路径部分也给代理走。
下面六种情况分别用 http://127.0.0.1/proxy/test.html 进行访问测试
第一种情况:
location /proxy/ { proxy_pass http://127.0.0.1/; }
最终会被代理到URL: http://127.0.0.1/test.html
第二种情况:相对于第一种 最后少一个 /
location /proxy/ { proxy_pass http://127.0.0.1; }
最终会被代理到URL: http://127.0.0.1/proxy/test.html
第三种情况:
location /proxy/ { proxy_pass http://127.0.0.1/aaa/; }
最终会被代理到URL: http://127.0.0.1/aaa/test.html
第四种情况:相对于第三种 最后少一个 /
location /proxy/ { proxy_pass http://127.0.0.1/aaa; }
最终会被代理到URL: http://127.0.0.1/aaatest.html
* 第五种情况:定义了一个正则表达式;那么在URl部分没有转换发生:
location ~ ^/proxy/ { proxy_pass http://127.0.0.1/aaa; }
最终会被代理到URL:http://127.0.0.1/proxy/test.html
最佳写法为:
location ~ ^/proxy/ { proxy_pass http://127.0.0.1; }
* 第六种情况:有rewrite规则改变URl; 那也不会发生转换.
location /proxy/ { rewrite /proxy/(.*)$ /index.php?page=$1 break; # break标记用于立即停止rewrite模块的所有指令 proxy_pass http://127.0.0.1/aaa; }
最终会被代理到URL: http://127.0.0.1/index.php?page=test.html
最佳写法为:
location /proxy/ { rewrite /proxy/(.*)$ /index.php?page=$1 break; proxy_pass http://127.0.0.1; }
Δήλωση: όλα τα άρθρα / τα σχέδια που αναδημοσιεύονται στον δικτυακό τόπο έχουν ως σκοπό τη διαβίβαση περισσότερων πληροφοριών και τη διευκόλυνση της συζήτησης, πράγμα που δεν σημαίνει ότι ο δικτυακός τόπος, ο οικοδεσπότης και ο διοργανωτής συμφωνούν με τις απόψεις τους ή επιβεβαιώνουν τη γνησιότητα του περιεχομένου τους. Τα περιεχόμενα των άρθρων είναι μόνο για αναφορά. Εάν παραβιαστούν τα δικαιώματα του αρχικού συγγραφέα, επικοινωνήστε με τον διαχειριστή του δικτυακού τόπου.
Λίστα σχολίων
-
Δεν υπάρχουν δεδομένα