2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
默認(rèn)生成的配置nginx-proxy
不能完全工作。
VIRTUAL_ROOT
我認(rèn)為環(huán)境變量搞砸了,因?yàn)閱栴}的根源是 PHP 通過獲取錯誤的路徑SCRIPT_FILENAME
(這就是為什么你看不到 PHP 輸出)并且沒有try_files
with=404
符號(這就是為什么你得到 200 的所有內(nèi)容)。
我在 GitHub 中準(zhǔn)備了一個(gè)工作設(shè)置,docker-compose
以證明它可以與SCRIPT_FILENAME
nginx 配置中的現(xiàn)有設(shè)置一起使用。
我已經(jīng)更改test.local
為test.localhost
.
我認(rèn)為要讓它正常工作,您必須使用 nginx 模板nginx-proxy
,因此生成的模板default.conf
確實(shí)可以與 php fpm 一起使用,并且包含缺少的 fastcgi 參數(shù)。
另一種不同的方法是將 PHP 和手動配置的 Web 服務(wù)器 (nginx) 打包在一個(gè)項(xiàng)目中,并在獨(dú)立項(xiàng)目中擁有自動反向 nginx 代理。這將花費(fèi)您運(yùn)行額外的進(jìn)程,但可以為您提供更多控制和更輕松的部署。
或者,您可能想看看traefik
哪個(gè)與 本質(zhì)上相同nginx-proxy
。

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
我使用 php-fpm 圖像和 nginx 作為 php 站點(diǎn)的主堆棧。話雖如此,我不使用 nginx-proxy docker 鏡像。相反,我在主機(jī)上使用普通 nginx,并將端口配置為指向后端 php-fpm docker 映像。
我也不使用 docker-compose 。因?yàn)樗皇沁\(yùn)行單個(gè)站點(diǎn)的 docker 容器,所以我不需要它。這是一個(gè) docker run 命令示例:
docker rm -f www.example.com || true
docker run -itd -p 9001:9000 -P \
? ? ? ? --name www.example.com \
? ? ? ? --volume /var/www/html/www.example.com:/var/www/html/www.example.com \
? ? ? ? --link mariadb:database.example.com \
? ? ? ? --restart="always" \
? ? ? ? --hostname="example.com" \
? ? --log-opt max-size=2m \
? ? --log-opt max-file=5 \
? ? ? ? mck7/php-fpm:7.4.x-wordpress
這是一個(gè) nginx 配置示例:
server {
? server_name example.com www.example.com;
? location ~ /.well-known {
? ? allow all;
? }
? location ~ /\.ht {
? ? deny all;
? }
? root /var/www/html/www.example.com/src;
? index index.php;
? location / {
? ? try_files $uri $uri/ /index.php?$args;
? }
? location ~ [^/]\.php(/|$) {
? ? fastcgi_split_path_info ^(.+?\.php)(/.*)$;
? ? if (!-f $document_root$fastcgi_script_name) {
? ? ? return 404;
? ? }
? ? include fastcgi_params;
? ? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
? ? fastcgi_param PATH_INFO? ? ? ?$fastcgi_path_info;
? ? fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
? ? fastcgi_pass? ?127.0.0.1:9001;
? ? fastcgi_index? index.php;
? }
}
有關(guān)此設(shè)置的一些事情很關(guān)鍵。docker 容器的端口重新映射。在此示例中,我將端口 9001 映射到 9000。另一個(gè)“問題”是容器的根必須是主機(jī)上的實(shí)際位置。我不知道為什么會出現(xiàn)這種情況,但無論出于何種原因,docker 認(rèn)為它使用的路徑實(shí)際上也必須是主機(jī)上的路徑。
- 2 回答
- 0 關(guān)注
- 151 瀏覽
添加回答
舉報(bào)