1 回答
TA贡献1848条经验 获得超10个赞
我设法解决了这个问题,所以我在下面为有类似问题的人发布我自己的解决方案。
解决方案是在 nginx 配置中使用 'alias' 指令而不使用 'root' 指令(我已经删除了一些在这里不重要的部分):
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;
}
}
现在请求已正确路由到端口 9000 上的 phpserver,并由 php fpm 在那里处理。Php fpm 通过查看“别名”指令知道要执行哪个脚本。
现在的问题是如何提供静态文件。一种解决方案是也通过 php fpm 为它们提供服务,但根据我在网上阅读的内容,不推荐这样做,因为开销会更大。所以我的解决方案是与 nginx docker 容器共享所有静态文件,以便 ngnix 可以访问它们并可以直接为它们提供服务。如果有人对如何在这种情况下提供静态文件有更好的解决方案,请告诉我。
# 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 关注
- 144 浏览
添加回答
举报