【问题标题】:Docker nginx and php-fpmDocker nginx 和 php-fpm
【发布时间】:2018-07-02 09:03:23
【问题描述】:

我为我们的产品搭建了一些容器(基于php的微服务),遇到一个看不懂的问题:

我有 3 个容器: - nginx - php-fpm + 代码 - php-fpm + 代码

Nginx 被配置为 php-fpm 的反向代理:

server {
listen 80;
#listen 443;

server_name 1.mydomain.com;

index index.php;

error_log  /var/log/nginx/sso-error.log;
access_log /var/log/nginx/sso-access.log;

root /1;

location ~ [^/]\.php(/|$) {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_pass php-fpm1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Headers' 'Authorization, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Expose-Headers' 'X-Domain-Token';
    add_header 'Access-Control-Max-Age' 86400;
    }
}

server {
listen 80;
#listen 443;

server_name 2.mydomain.com;

index index.php;

error_log  /var/log/nginx/ajax-broker.error.log;
access_log /var/log/nginx/ajax-broker.access.log;

root /2;

location ~ [^/]\.php(/|$) {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_pass php-fpm2:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Headers' 'Authorization, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Expose-Headers' 'X-Domain-Token';
    add_header 'Access-Control-Max-Age' 86400;
  }
}

如果,我将带有代码的卷从 php-fpm 安装到 nginx 容器 - 一切正常, 但是,如果我只将代码存储在 fpm 容器中 - nginx 返回 404,对于 *php URI 也是如此。

如何在不安装的情况下正确设置 nginx。

【问题讨论】:

    标签: php docker nginx


    【解决方案1】:

    好吧,经过几次实验我找到了解决方案,你应该再添加一个 location 并在 php 部分注释 try_files

    server {
    listen 80;
    #listen 443;
    
    server_name 1.mydomain.com;
    
    index index.php;
    
    error_log  /var/log/nginx/sso-error.log;
    access_log /var/log/nginx/sso-access.log;
    
    root /1;
    
    location / {
        try_files $uri $uri/index.php;
    }
    
    location ~ [^/]\.php(/|$) {
        #try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass php-fpm1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Headers' 'Authorization, Keep-Alive, User-Agent, 
        X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Expose-Headers' 'X-Domain-Token';
        add_header 'Access-Control-Max-Age' 86400;
        }
    }
    
    server {
    listen 80;
    #listen 443;
    
    server_name 2.mydomain.com;
    
    index index.php;
    
    error_log  /var/log/nginx/ajax-broker.error.log;
    access_log /var/log/nginx/ajax-broker.access.log;
    
    root /2;
    
    location / {
        try_files $uri $uri/index.php;
    }
    
    location ~ [^/]\.php(/|$) {
        #try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass php-fpm2:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Headers' 'Authorization, Keep-Alive, User-Agent, 
        X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Expose-Headers' 'X-Domain-Token';
        add_header 'Access-Control-Max-Age' 86400;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 2021-04-02
      • 2017-09-23
      相关资源
      最近更新 更多