我正在docker-compose用来设置一个最小的nginx+php-fpm应用程序,但由于某种原因,docker 容器上没有 php.ini 文件(我知道是因为phpinfo()说Loaded Configuration File: (none))。
这是我的docker-compose.yml文件:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:5-fpm
volumes:
- .root:/var/www/html:ro
command: bash -c "apt-get update && apt-get install -y php5-mysql && php-fpm"
Run Code Online (Sandbox Code Playgroud)
site.conf 也很简单:
server {
index index.php;
server_name local.myspicesage.com;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param …Run Code Online (Sandbox Code Playgroud) 我继承了一个生产网络服务器,我看到它上面至少有 5 个 nginx 副本:
/usr/local/nginx/sbin/nginx/usr/local/nginx/sbin/nginx.old/usr/local/nginx-new/sbin/nginx/usr/local/nginx-nobrotli/sbin/nginx/usr/sbin/nginx当使用“-v”选项运行时,前 4 个返回“nginx 版本:nginx/1.10.0”,而最后一个返回“nginx 版本:nginx/1.0.15”。
服务器正在提供实时流量,因此我必须非常小心地进行任何更改。
从运行中ps aux | grep nginx我可以看到当前使用的是nginx-nobrotli:
nginx: master process /usr/local/nginx-nobrotli/sbin/nginx -c /etc/nginx/nginx.conf
让我感到困惑的是,当我只是nginx -t从命令行输入时,我会返回错误。我认为这是因为我真的在调用/usr/sbin/nginx -t(因为nginx -v返回“nginx 版本:nginx/1.0.15”,我认为这是调用第 5 个)。
所以这里是真正的问题:
nginx -s reload它会通过加载错误版本的 nginx 来关闭站点)nginx -t命令引用 nginx 的“正确”版本的最佳方法是什么?(假设当前运行的是正确的)/etc/nginx/conf.d/我在/usr/local/nginx*/conf/文件夹中看到的配置文件和我在文件夹中看到的配置文件有什么区别?/usr/local/nginx*文件夹在各自的sbin/文件夹下都包含一个二进制文件,这是否意味着它们是相同的?为什么会有人有这样的 3 个版本?更新1:
该命令nginx -t返回:
nginx: [emerg] unknown directive …Run Code Online (Sandbox Code Playgroud)