Linux
位置指令的 niginx 配置簡化
我有以下(為簡單起見而編輯)nginx配置:
server{ location ~ /saml/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300; proxy_pass https://acme.com; } location / { try_files $uri $uri/ /index.html; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300; proxy_pass https://acme.com; } }
如您所見,我定義了兩個位置。兩者之間的唯一區別是任何包含 /SAML/* 的 URL 都不會得到該
try_files
行。其他一切都是一樣的。有沒有一種更簡潔、更易於管理的方式來編寫這個?
Nginx 中的許多指令都可以從周圍的上下文中繼承。您只需要特定塊中的
proxy_pass
and語句。try_files``location
例如:
server{ root ...; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; send_timeout 300; location ~ /saml/ { proxy_pass https://acme.com; } location / { try_files $uri $uri/ /index.html; proxy_pass https://acme.com; } }
或者,將常用語句放入單獨的文件並使用
include
語句。有關詳細資訊,請參閱此文件。