Nginx转发服务给对应Docker中的 Phpfastcgi

来源:互联网 发布:保定seo公司 编辑:程序博客网 时间:2024/05/30 04:30

环境:

主机:centos7 nginx

php服务api位置:主机上 Docker

php配置的映射端口: 127.0.0.1:9001~900x

php服务的入口文件路径: app-server/application

请求Url格式:https://server-name/Info/XXXXXXXXXXhttps://server-name/Upload/XXXXXXXXXX

Nginx 分发配置如下:

server{        listen 443 ssl http2;        server_name server-name;        ssl on;        ssl_certificate /path-to-crt;        ssl_certificate_key /path-to-key;        ssl_session_timeout 5m;        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;        ssl_prefer_server_ciphers on;        location ~ \.php {                fastcgi_index index.php;                #fastcgi_pass 127.0.0.1:9001;                include      fastcgi_params;                set $path_info "";                set $app "";        set $app_port "";                set $real_script_name $fastcgi_script_name;        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {                        set $real_script_name $1;                        set $path_info $2;                }        if ($path_info ~ "^(^(\/\w+))") {            set $app $1;        }        if ($app  ~ "(\w+)$") {                        set $app $1;                }        #信息服务        if ($app = Info){            set $app  "macco-information/application";            set $app_port  127.0.0.1:9001;        }        #上传服务        if ($app = Upload){                        set $app  "macco_uploadfile/application";                        set $app_port  127.0.0.1:9003;                }        #...省略其他服务        fastcgi_pass $app_port;        fastcgi_param SCRIPT_FILENAME /workspace/$app/$real_script_name;                fastcgi_param SCRIPT_NAME $real_script_name;                fastcgi_param PATH_INFO $path_info;        }        if (!-e $request_filename) {                rewrite ^/(.*)  /index.php/$1 last;        }    }server{  listen        80;  server_name   server-name;  return 301    https://$host$request_uri;}

思路:Nginx 获取 Url_path ,根据自己的服务 Url 的规则来做转发,由于每个微服务是在一个 Docker 中,所以需要设置端口 App_port 来映射到 Docker 中, 设置 App 来指定 FastcgiSCRIPT_FILENAME 位置。

原创粉丝点击