2016-07-30 12 views
0

Ich beginne eine Migration einer WordPress-Website zu einer Rails-Anwendung. Die Migration muss in den nächsten Monaten schrittweise erfolgen, daher muss es möglich sein, beide Standorte parallel laufen zu lassen. Mit fastcgi_intercept_errors auf einer Testumgebung Ich habe es geschafft, alle 404 Fehler, die von Wordpress zurück zu bekommen weiterleiten an die Rails-Anwendung die folgende Konfiguration verwenden:Rails App hinter Wordpress mit fastcgi_intercept_errors

server { 
     listen 80 default_server; 
     listen [::]:80 default_server ipv6only=on; 

     server_name mydomain.com; 
     root   /var/www/html/wordpress; 
    index index.php index.html 

     error_page 500 502 503 504 404 @rails; 

    location/{ 
     try_files $uri $uri/ /index.php?$args; 
     recursive_error_pages on; 
     error_page 404 = @rails; 
    } 

    location ~ \.php$ { 
       fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
       fastcgi_index index.php; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_intercept_errors on; 
       include fastcgi_params; 
     error_page 404 = @rails; 

     } 

    location @rails{ 
     passenger_enabled on; 
     passenger_user user; 
     rails_env development; 
     root /home/user/rails_app/app/public; 
    } 
} 

Das Problem ist jetzt kommt, wenn die Schienen App Referenzen jede/assets Links Sie leiten immer zurück in die Rails-App und laden immer den Root-Speicherort der Anwendung.

Gibt es eine Möglichkeit, dies zu beheben, so dass Assets auch als Teil der Rails-Anwendung behandelt werden?

Antwort

0

Diese Nginx-Konfiguration war in der Lage zu tun, was ich brauchte. Die Fehlerseiten-Direktive wurde in den einzigen php-Speicherort verschoben und ein Assets-Speicherort wurde hinzugefügt, um den Standard-root-Speicherort von der php-app in den öffentlichen Ordner der Ruby-Anwendung umzuleiten.

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    server_name mydomain.com; 
    root   /var/www/html/wordpress; 
    index index.php index.html; 

    location/{ 
     try_files $uri $uri/ /index.php?$args; 
     recursive_error_pages on; 
     error_page 404 = @rails; 
    } 

    location ~ \.php$ { 
     fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_intercept_errors on; 
     include fastcgi_params; 
     error_page 404 = @rails; 
    } 

    location ^~ /assets/ { 
     root /home/user/rails_app/app/public; 
    } 

    location @rails{ 
     passenger_enabled on; 
     passenger_user user; 
     rails_env production; 
     root /home/user/rails_app/app/public; 
    } 
}