2017-10-16 3 views
0

Je suis utiliser symfony développer mon API pour un site existant. mais je ne peux pas configurer mon application symfony commeapplication symfony dans un sous-répertoire dans nginx pour un site existant

www.domain.com/sfapi/xxx 
www.domain.com/sfapi/xxxxx 

ici mon nginx vhost configurer

/usr/local/nginx/conf/sfapi.conf pour configurer app symfony.

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; 
    } 

principal vhost conf

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

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

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

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 [error] 20371 # 0: 543 * Réécriture ou cycle de redirection interne tout en redirect à l'emplacement nommé "@rewriteapp",

grâce

+0

Pourquoi avez-vous briser au lieu de retour dans '@ rewriteapp'? –

+0

@Chibueze Opata, je veux vérifier si le fichier existe – lcp0578

+0

J'ai utiliser try_files donc je supprime si 'location @rewriteapp { réécrire ^/(. *) $ /sfapi/app.php/$1 dernier; } ' – lcp0578

Répondre

0

Votre réécriture provoque une boucle vers le bloc d'emplacement /sfapi/.

Essayez de retirer le bloc @rewriteapp comme ceci:

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

merci, je modifie' try_files $ uri /app.php$is_args$args last; ', mais il télécharge app.php au lieu d'être exécuté. – lcp0578

+0

Vérifiez vos directives 'fastcgi_pass' et' default_type' (devrait être 'text/html') –

+0

merci de m'aider, je change' default_type text/html', app.php sortie du contenu plian code pas exécuté, comme 'loadClassCache() ; // $ kernel = nouveau AppCache ($ kernel); // Lorsque vous utilisez HttpCache, vous devez appeler la méthode dans votre contrôleur frontal au lieu de vous fier au paramètre de configuration // Request :: enableHttpMethodParameterOverride(); $ request = Request :: createFromGlobals(); $ response = $ kernel-> handle ($ request); $ response-> send(); $ kernel-> terminate ($ request, $ response); 'Je pense que quelque part mon config a une erreur, je vous remercie sincèrement – lcp0578