Nginx HHVM WordPress con PHP Execution in una sottodirectory intermedia

Ho una strana situazione con uno dei miei siti web, ancora in fase di sviluppo in AWS. Ho nginx 1.9.9 con HHVM 3.6.6-1.amzn1.x86_64 su un t2.micro. Non è accessibile al pubblico.

Ho un sito web scritto personalizzato nella radice del dominio, ho WordPress nella directory / blog e wordpress admin è in / blog / wp-admin. Il sito personalizzato presenta vari file tra cui index.php. WordPress ha index.php e tutti i tipi di altre cose nella directory del blog, wp-admin utilizza anche index.php.

  • Routing proxy multisite Nginx che instrada Apache
  • Come posso osservare cosa sta facendo nginx? (per risolvere: "1024 collaboratori non sono sufficienti")
  • Come si installa PHP5 senza installare Apache in ubuntu?
  • Come posso utilizzare SELinux per limitare gli script PHP?
  • Devo aprire 25 porte per submit e-mail con la function php mail?
  • php cli ulteriori file .ini non caricati
  • Posso caricare il sito personalizzato, funziona perfettamente. WordPresss admin funziona completamente. La home page di blog di WordPress / elenco di storia funziona completamente. Il problema è quando faccio clic su uno dei collegamenti di articolo del blog per visualizzarlo in pieno mostra l'indice di home page personalizzato. Quindi, per dire un altro modo

    http://www.example.com/index.php - custom website works http://www.example.com/blog/index.php - blog index works http://www.example.com/blog/2015/storyname - story load doesn't work with permalink %postname% regardless of text in post name - http://www.example.com/index.php loads http://www.example.com/blog/2015/?p=96 - story load works http://www.example.com/blog/wp-admin/ - admin works 

    Quando faccio clic sul collegamento della storia, ottengo lo stesso contenuto della pagina come se avessi fatto clic su http://www.example.com/index.php, salvo che le immagini non si caricano finché vengono eseguite con gli URL relativi

     http://www.example.com/blog/2015/storyname 

    Quando carichi il root del sito /index.php ricevi le seguenti intestazioni di debug (vedi la mia configuration di seguito per come vengono generati)

     Z_LOCATION: PHP MAIN URI: /index.php Z_DOCUMENT_ROOT: /var/www/hr Z_FASTCGI_SCRIPT_NAME: /index.php Z_REQUEST_FILENAME: /var/www/hr/index.php 

    Quando cargo / wp-admin / otterò queste intestazioni

     Z_LOCATION: PHP MAIN URI: /blog/wp-admin/index.php Z_DOCUMENT_ROOT: /var/www/hr Z_FASTCGI_SCRIPT_NAME: /blog/wp-admin/index.php Z_REQUEST_FILENAME: /var/www/hr/blog/wp-admin/index.php 

    Quando carichi il blog home /blog/index.php otterò queste intestazioni

     Z_LOCATION: PHP MAIN URI: /blog/index.php Z_DOCUMENT_ROOT: /var/www/hr Z_FASTCGI_SCRIPT_NAME: /blog/index.php Z_REQUEST_FILENAME: /var/www/hr/blog/index.php 

    Quando provo a caricare questo URL http://www.example.com/blog/2015/storyname riceverò le seguenti intestazioni. Z_REQUEST_FILENAME (sopra) mostra l'URL errato che viene caricato.

     Z_LOCATION: PHP MAIN URI: /index.php Z_DOCUMENT_ROOT: /var/www/hr Z_FASTCGI_SCRIPT_NAME: /index.php Z_REQUEST_FILENAME: /var/www/hr/index.php 

    Non ho idea di come provare a caricare l'index.php di root del sito quando faccio clic su quel URL. indizi:

    • La modifica della struttura dei permessi di WordPress da% postname% a? P = 123 corregge il problema
    • Nessuna delle altre strutture permalink aiuta affatto

    Perché questo sarebbe un problema solo per la visualizzazione di articoli blog ???? Mi chiedo se sia qualcosa a che fare con i try_files?

    Non c'è nulla nel registro degli errori hhvm, non c'è nulla nel log errore di nginx. Il registro di accesso mostra quanto segue quando richiesto l'ultimo URL

     (IP removed) - - [10/Jan/2016:08:22:19 +0000] "GET /blog/2015/storyname HTTP/1.1" 200 4424 "http://www.example.com/blog/" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0" "-" "0.050" 

    Ecco il mio config del sito nginx. Non ho incluso il principale nginx.conf poiché non credo sia pertinente. NB Ho aggiornato questo lavoro il codice di lavoro.

     server { server_name www.example.com; root /var/www/hr; access_log /var/log/nginx/hr.access.log main; # Default location to serve location / { try_files $uri $uri/ /blog/index.php?$args; add_header Z_LOCATION "hr_root"; add_header URI $uri; # DEBUG } location ~* \.(jpg|jpeg|png|gif|css|js)$ { log_not_found off; access_log off; add_header Z_LOCATION "STATIC RESOURCES REGEX"; add_header URI $uri; # DEBUG } # Send HipHop and PHP requests to HHVM location ~ \.(hh|php)$ { fastcgi_keep_conn on; fastcgi_intercept_errors on; fastcgi_pass php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # DEBUGGING add_header Z_LOCATION "PHP MAIN"; add_header URI $uri; add_header Z_DOCUMENT_ROOT "$document_root"; add_header Z_FASTCGI_SCRIPT_NAME "$fastcgi_script_name"; add_header Z_REQUEST_FILENAME "$request_filename"; } } # Forward non-www requests to www server { listen 0; server_name example.com; return 302 http://www.example.com$request_uri; } 

    Qualsiasi pensiero, idee o aiuto apprezzati. Questo è abbastanza riccio per me, ma sospetto che sarà un semplice cambiamento per risolverlo.

  • Il server NFS ad alta disponibilità (Heartbeat / DRBD) si appende lungamente sui client quando si verifica l'acquisizione
  • Alcuni configuratori di proxy di nginx inversa fanno funzionare una volta al giorno
  • Sintassi della string di cipher in nginx
  • La ridenominazione di WebDav non riesce ad installare Apache mod_dav dietro NginX
  • Script per scoprire le differenze tra i file system locali e remoti tramite SSH
  • Valore ottimale per Nginx worker_connections
  • One Solution collect form web for “Nginx HHVM WordPress con PHP Execution in una sottodirectory intermedia”

    La consegna dei contenuti WordPress è eseguita dallo script /blog/index.php . Presumibilmente, questo viene invocato quando la tua invio dell'URI /blog/ causa della $uri/ clause in try_files . Ma non hai regole per invocare /blog/index.php per qualsiasi altro URI che inizia con /blog/...

    Un'opzione è quella di rendere WorkPress l'impostazione predefinita:

     location / { try_files $uri $uri/ /blog/index.php?$args; ... } 

    In alternativa, aggiungi un altro block di località per gestire solo gli URI che iniziano con /blog/... :

     location /blog { try_files $uri $uri/ /blog/index.php?$args; ... } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.