1 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
我設(shè)法解決了這個(gè)問(wèn)題,所以我在下面為有類似問(wèn)題的人發(fā)布我自己的解決方案。
解決方案是在 nginx 配置中使用 'alias' 指令而不使用 'root' 指令(我已經(jīng)刪除了一些在這里不重要的部分):
upstream phpserver {
server web:9000;
}
server {
listen 443 http2;
ssl on;
server_name app;
ssl_certificate /ssl.crt;
ssl_certificate_key /ssl.key;
location ~ ^/index\.php(/|$) {
alias /app/web;
fastcgi_pass phpserver;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
internal;
http2_push_preload on;
}
}
現(xiàn)在請(qǐng)求已正確路由到端口 9000 上的 phpserver,并由 php fpm 在那里處理。Php fpm 通過(guò)查看“別名”指令知道要執(zhí)行哪個(gè)腳本。
現(xiàn)在的問(wèn)題是如何提供靜態(tài)文件。一種解決方案是也通過(guò) php fpm 為它們提供服務(wù),但根據(jù)我在網(wǎng)上閱讀的內(nèi)容,不推薦這樣做,因?yàn)殚_(kāi)銷會(huì)更大。所以我的解決方案是與 nginx docker 容器共享所有靜態(tài)文件,以便 ngnix 可以訪問(wèn)它們并可以直接為它們提供服務(wù)。如果有人對(duì)如何在這種情況下提供靜態(tài)文件有更好的解決方案,請(qǐng)告訴我。
# Cache Control for Static Files
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
#access_log on;
#log_not_found off;
expires 360d;
}
- 1 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)