2012-04-25 4 views
2

Nous avons deux serveurs nginx. Le premier serveur reçoit une demande via www.example.com/partner. Il envoie l'ensemble de la requête au second serveur qui a configuré php + fastCgi. Nginx accès journal du second serveur:Config pour servir le site Web sur le serveur nginx via l'adresse URL

"GET/partenaire/HTTP/1.0" 200 2845

Sur le deuxième serveur j'ai un vhost qui ressemble à ce que:

server { 
     listen my.ip:80; 
     server_name www.example.com; 
     root /var/www/example; 

     if ($http_host != "www.example.com") { 
       rewrite^http://www.example.com$request_uri permanent; 
     } 

     index index.php index.html; 


     location = /partner/favicon.ico { 
       log_not_found off; 
       access_log off; 
       expires max; 
     } 


     location @nocache { 
       try_files $uri $uri/ /index.php?$args; 
     } 
     location = /partner/robots.txt { 
       allow all; 
       log_not_found off; 
       access_log off; 
     } 

     location ^~ /partner/typo3temp/tx_ncstaticfilecache { 
       expires 43200; 
       charset utf-8; 
     } 

     location = /partner/clear.gif { 
       empty_gif; 
       expires max; 
     } 
     location ^~ /partner/typo3/gfx { 
       expires max; 
     } 
     location ^~ /partner/typo3temp/compressor { 
       expires max; 
     } 

    location /partner {  


       if ($query_string ~ ".+") { 
         return 405; 
       } 
       # pass requests from logged-in users to PHP 
       if ($http_cookie = 'nc_staticfilecache|be_typo_user') { 
         return 405; 
       } # pass POST requests to PHP 
       if ($request_method !~ ^(GET|HEAD)$) { 
         return 405; 
       } 
       if ($http_pragma = 'no-cache') { 
         return 405; 
       } 
       if ($http_cache_control = 'no-cache') { 
         return 405; 
       } 
       error_page 405 = @nocache; 

       # serve requested content from the cache if available, otherwise pass the request to PHP 
       try_files /typo3temp/tx_ncstaticfilecache/$host${request_uri}index.html @nocache; 


     location ~* \.(sql|htaccess|htpasswd|tpl|html5|xhtml) { 
       deny all; 
     } 

     location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ { 
       expires max; 
       log_not_found off; 
     } 

     location ~* \.(cur|ico|gif|png|jpe?g|css|js|swf|woff)((\?\d\d\d\d\d\d\d\d\d\d)|(\?s=\d\d\d\d\d\d\d\d\d\d))$ { 
       expires max; 
       log_not_found off; 
     } 
     location ~* \.(cur|ico|gif|png|jpe?g|css|js|swf|woff)(\?v\d\d?\.\d\d?\.\d\d?)$ { 
       expires max; 
       log_not_found off; 
     } 
     location ~* ^(/typo3/sysext|/typo3conf/ext).*\.(cur|ico|gif|png|jpe?g|css|js|swf|woff) { 
       expires max; 
       log_not_found off; 
     } 



     location ~ /\. { 
       deny all; 
       access_log off; 
       log_not_found off; 
     } 

     location ~ \.php$ { 
       try_files $uri =404; 
       include /etc/nginx/fastcgi_params; 
       fastcgi_pass 127.0.0.1:9000; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       fastcgi_index index.php; 
     } 
    } 
} 

Le problème que je reçois et 403 Erreur. Des idées quoi de mal?

+0

pouvez-vous définir le error_log à déboguer et le coller quelque part? mon estimation est que l'emplacement ~ \ .php $ block n'est pas évalué car nginx trouve le fichier sur le système de fichiers. – pcting

Répondre

1

Raison la plus probable du téléchargement des fichiers php car le bloc d'emplacement de gestion php est imbriqué sous un autre bloc d'emplacement (ceci suppose que php a été correctement configuré). Dans l'ensemble, votre configuration semble trop compliquée et je suis sûr que toute tâche peut être accomplie avec une configuration beaucoup plus simple.

J'ai effectué un nettoyage/consolidation de base mais je n'ai pas une image complète, certains bits peuvent être éteints. Je devrais vous donner quelques idées cependant.

Chose importante cependant en ce qui concerne le PHP est de le sortir de l'emplacement imbriqué. De même, l'utilisation du code d'état 418 au lieu de 405 pour la redirection 405 peut être légitimement générée pour d'autres raisons. Utilisation d'un bloc de serveur séparé pour la redirection de www.example.com vers www.example.com pour de meilleures performances.

server { 
    listen my.ip:80; 
    server_name example.com; 
    rewrite^http://www.example.com$request_uri? permanent; 
} 

server { 
    listen my.ip:80; 
    server_name www.example.com; 
    root /var/www/example; 
    index index.php index.html; 
    error_page 418 = @nocache; 

    if ($query_string ~ ".+") { 
     return 418; 
    } 
    # pass requests from logged-in users to PHP 
    if ($http_cookie = 'nc_staticfilecache|be_typo_user') { 
     return 418; 
    } 
    # pass POST requests to PHP 
    if ($request_method !~ ^(GET|HEAD)$) { 
     return 418; 
    } 

    location = /partner/robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 

    location ^~ /partner/typo3temp/tx_ncstaticfilecache { 
     expires 43200; 
     charset utf-8; 
    } 

    location = /partner/clear.gif { 
     empty_gif; 
     expires max; 
    } 

    location ^~ /partner/typo3/gfx { 
     expires max; 
    } 
    location ^~ /partner/typo3temp/compressor { 
     expires max; 
    } 

    location /partner { 
     # serve requested content from the cache if available, 
     # otherwise pass the request to PHP 
     try_files /typo3temp/tx_ncstaticfilecache/$host${request_uri}index.html @nocache; 
    } 

    location ~* \.(sql|tpl|html5|xhtml) { 
     deny all; 
    } 

    location ~* \.(jpg|jpeg|png|gif|css|js|ico)(.*)$ { 
     expires max; 
     log_not_found off; 
    } 

    location ~ /\. { 
     deny all; 
     access_log off; 
     log_not_found off; 
    } 

    location ~ \.php$ { 
     return 418; 
    } 

    location @nocache { 
     try_files $uri =404; 
     include /etc/nginx/fastcgi_params; 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_index index.php;    
    } 
} 
+0

vous avez manqué le retour 418; Mais cela ne résout pas le problème, j'obtiens une erreur 404 –

+0

L'erreur 404 peut signifier que cette ligne 'try_files $ uri = 404;' dans le bloc nocache est frappé. Vous pouvez essayer de le changer en 403 pour confirmer. Si cela vous donne une erreur 403, alors la structure de la config affichée est correcte et le problème est dans le détail de ce qui semble être une config trop compliquée. Je ne suis pas sûr que "/typo3temp/tx_ncstaticfilecache/$host${request_uri}index.html" est censé revenir par exemple. Le bit "$ {request_uri}" par exemple. Vous aurez besoin de trier tous ces types de choses si la structure fonctionne comme prévu. I.E., les appels PHP finissent dans le bloc nocache. – Dayo

+0

Oui, il me donne 403 maintenant. Typo3temp contient des fichiers mis en cache. Je suis déconcertant avec ce problème pendant quelques jours maintenant incapable de le résoudre ... –

Questions connexes