簡體   English   中英

Docker Nginx和php-fpm

[英]Docker nginx and php-fpm

我為我們的產品(基於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部分中注釋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;
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM