php - 服务器上的 nginx 无法连接到 docker php-fpm
问题描述
我在服务器上运行 nginx,而不是在 docker 容器中,因为获取工作 SSL 时遇到问题。我有一个分别运行 my-sql 和 php-fpm 的 docker 容器。当我运行所有这些时,我找不到文件,我不知道为什么。
当我跑步sudo nginx -t
时它说一切都很好,但file not found
我跑步后仍然得到sudo systemctl restart nginx
我的 Nginx 文件:
server {
listen 80;
listen [::]:80;
server_name njord-assets.com www.njord-assets.com;
client_max_body_size 108M;
access_log /var/log/nginx/application.access.log;
root /var/www/njord-assets.com/public;
index index.php;
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}
server {
listen 443 ssl;
server_name njord-assets.com www.njord-assets.com;
ssl_certificate /etc/letsencrypt/live/njord-assets.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/njord-assets.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/njord-assets.com/chain.pem;
client_max_body_size 108M;
access_log /var/log/nginx/application.access.log;
root /var/www/njord-assets.com/public;
index index.php;
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}
码头工人撰写文件:
###############################################################################
# Generated on dev.io #
###############################################################################
version: "3.1"
services:
redis:
restart: always
image: redis:alpine
container_name: my-asset-management-redis
mysql:
restart: always
image: mysql:8.0
container_name: my-asset-management-mysql
working_dir: /application
volumes:
- .:/application
- mysql-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=app
- MYSQL_USER=user
- MYSQL_PASSWORD=pass
php-fpm:
restart: always
build: docker/production/php-fpm
container_name: my-asset-management-php-fpm
working_dir: /application
volumes:
- .:/application
- ./docker/production/php-fpm/php-ini-extras.ini:/etc/php/7.4/fpm/conf.d/99-extras.ini
ports:
- "9000:9000"
我已经检查并且我的 Nginx 错误日志正在返回
2020/05/31 10:50:50 [error] 932#932: *570 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 81.149.1.9, server: njord-assets.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "njord-assets.com"
解决方案
问题是 nginx 文件需要让根是容器内的根而不是外部的根,所以:
root /var/www/njord-assets.com/public;
应该:
root /application/public;
推荐阅读
- c++ - 已声明(但未定义)模板的实例化 ['X' 已实例化]
- python - 来自 FBProphet 模型的无差异预测值
- sql-server - Sql Server 奇怪的查询优化
- typescript - 跨子类维护生成器函数实例
- android - Kotlin withTimeout 协程取消
- python - 使用按日期分组的 value_counts 中的值创建一个新的 DataFrame
- git - 在 Github 上阻止每人 1 个克隆
- iis - AQTRONIX WebKnight 4.5
- javascript - 将数组转换为具有特定键的数组的obj
- python - 将特定领域的词汇添加到 Huggingface 预训练的分词器