Linux
php-fpm 使用上游和位置有什麼區別?
我一直在尋找,但找不到直接的答案,如果有人能澄清這一點,將不勝感激,謝謝!
location ~ \.php$ { try_files $uri = 404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; }
或/與?
upstream php { server unix:/run/php-fpm/php-fpm.sock; }
謝謝!
我發現,
nginx
至少從 1.6.2 開始,location 塊的工作語法是:location ~ \.php$ { try_files $uri = 404; fastcgi_pass php; fastcgi_index index.php; include fastcgi.conf; }
也就是說:
http://
在引用 php 後端之前不應該指定協議。語法將http://php
與proxy_pass
指令一起使用,而不是fastcgi_pass
.
location
用於匹配表達式並為它們創建規則。
upstream
定義可以引用的伺服器。在您的範例中,這意味著如果您想獲得等效的
location ~ \.php$ { try_files $uri = 404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; }
,你需要
upstream php { server unix:/run/php-fpm/php-fpm.sock; } location ~ \.php$ { try_files $uri = 404; fastcgi_pass php; fastcgi_index index.php; include fastcgi.conf; }
上游塊的好處是您可以將多個伺服器/埠/服務配置為上游並在它們上分配流量,例如:
upstream php { server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; server 192.68.1.2 weight=5; server unix:/run/php-fpm/php-fpm.sock; }
您可以在 nginx 文件中找到有關此的更多資訊: