频道栏目
首页 > 资讯 > 其他 > 正文

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

17-11-27        来源:[db:作者]  
收藏   我要投稿

环境:

主机:centos7 nginx

php服务api位置:主机上 Docker 中

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

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

请求Url格式:https://server-name/Info/XXXXXXXXXX ,https://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 来指定 Fastcgi 的 SCRIPT_FILENAME 位置。

相关TAG标签
上一篇:解决无线能连接上不能上网问题
下一篇:MapReduce本地模式使用教程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站