首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >现有站点nginx子目录中的symfony应用程序

问现有站点nginx子目录中的symfony应用程序
EN

Stack Overflow用户
提问于 2017-10-16 17:11:47
回答 1查看 1.2K关注 0票数 0

我正在使用symfony为现有站点开发我的API。但是我不能像这样配置我的symfony应用

代码语言:javascript
复制
www.domain.com/sfapi/xxx
www.domain.com/sfapi/xxxxx

这里我的nginx vhost配置

/usr/local/nginx/conf/sfapi.conf用于symfony应用程序配置。

代码语言:javascript
复制
location @rewriteapp {
          if (-f $request_filename) {
                  break;
          }
          rewrite ^/(.*)$ /sfapi/app.php/$1 last;
   }

   location ^~ /sfapi/ {
           alias /home/wwwroot/www.domain.com/wuye/chengshi/web;
           #root /home/wwwroot/www.domain.com/wuye/chengshi/web;
           index app.php;
           set $root "/home/wwwroot/www.domain.com/wuye/chengshi/web";
           # try to serve file directly, fallback to app.php
           try_files $uri  @rewriteapp;
   }
   # PROD
   location ~ ^/app\.php(/|$) {
          fastcgi_pass  unix:/tmp/php-cgi.sock;
          fastcgi_split_path_info ^(.+\.php)(/.*)$;

           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $root$fastcgi_script_name;
           fastcgi_param SCRIPT_NAME $fastcgi_script_name;
           fastcgi_param PATH_INFO $fastcgi_path_info;
   }

主vhost conf

代码语言:javascript
复制
server {
        listen 80;
        listen [::]:80;
        server_name chengshi.91zhangyu.com;
        rewrite ^(.*) https://$server_name$1 permanent;
}
server{
        listen 443;
        #listen 80;
        listen [::]:443;
        server_name www.domain.com;
        index index.html index.htm app.php index.php default.html default.htm default.php;
        ssl on;
        ssl_certificate   /home/certificate/www.domain.com.crt;
        ssl_certificate_key  /home/certificate/www.domain.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        root  /home/wwwroot/www.domain.com/chengshi/chengshi;

        include chengshi.wuye.conf;
        include destoon.conf;
        #error_page   404   /404.html;
        location ~ [^/]\.php(/|$)
        {
            # comment try_files $uri =404; to enable pathinfo
            #try_files $uri =404;
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
            include pathinfo.conf;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        access_log /home/wwwlogs/www.domain.com access;
    }

destoon.conf

代码语言:javascript
复制
rewrite ^/(.*)\.(asp|aspx|asa|asax|dll|jsp|cgi|fcgi|pl)(.*)$ /404.php last;
rewrite ^/(.*)/file/(.*)\.php(.*)$ /404.php last;
rewrite ^/(.*)-htm-(.*)$ /$1.php?$2 last;
rewrite ^/(.*)/show-([0-9]+)([\-])?([0-9]+)?\.html$ /$1/show.php?itemid=$2&page=$4 last;
rewrite ^/(.*)/list-([0-9]+)([\-])?([0-9]+)?\.html$ /$1/list.php?catid=$2&page=$4 last;
rewrite ^/(.*)/show/([0-9]+)/([0-9]+)?([/])?$ /$1/show.php?itemid=$2&page=$3 last;
rewrite ^/(.*)/list/([0-9]+)/([0-9]+)?([/])?(.*)?$ /$1/list.php?catid=$2&page=$3&attr=$5 last;
rewrite ^/(.*)/([A-za-z0-9_\-]+)-c([0-9]+)-([0-9]+)\.html$ /$1/list.php?catid=$3&page=$4 last;
rewrite ^(.*)/([a-z]+)/(.*)\.shtml$ $1/$2/index.php?rewrite=$3 last;
rewrite ^/(com)/([a-z0-9_\-]+)/([a-z]+)/(.*)\.html$ /index.php?homepage=$2&file=$3&rewrite=$4 last;
rewrite ^/(com)/([a-z0-9_\-]+)/([a-z]+)([/])?$ /index.php?homepage=$2&file=$3 last;
rewrite ^/(com)/([a-z0-9_\-]+)([/])?$ /index.php?homepage=$2 last;

fastcgi.conf

代码语言:javascript
复制
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

pathinfo.conf

代码语言:javascript
复制
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO       $path_info;
try_files $fastcgi_script_name =404;

nginx_error.log

2017/10/17 01:08:34错误20371#0:*543重写或内部重定向循环,同时重定向到指定位置"@rewriteapp",

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 17:45:32

您的重写将导致返回到/sfapi/位置块的循环。

尝试像这样删除@rewriteapp块:

代码语言:javascript
复制
   location ^~ /sfapi/ {
           alias /home/wwwroot/www.domain.com/wuye/chengshi/web;
           #root /home/wwwroot/www.domain.com/wuye/chengshi/web;
           index app.php;
           set $root "/home/wwwroot/www.domain.com/wuye/chengshi/web";
           # try to serve file directly, fallback to app.php
           try_files $uri /sfapi/app.php/$1 last;
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46775627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档