2015-08-15 59 views
0

我有一個使用laravel 4.2的現有網站。我試圖在/ blog子目錄中安裝October CMS(僅用作博客和幫助部分),但是nginx安裝不正確。我做了10月份的CMS安裝嚮導,並且能夠讓/blog/index.php頁面正確顯示。問題是當我嘗試登錄到後端(/ blog/backend)時,我得到一個404頁面。下面是我對這個網站的虛擬主機的nginx的配置:10月CMS安裝爲子目錄 - /後端未找到,Nginx配置問題?

server { 
    listen 80; 
    server_name my_site; 
    root /home/vagrant/my_site/public; 

    index index.html index.htm index.php; 

    charset utf-8; 

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

    location = /favicon.ico { access_log off; log_not_found off; } 
    location = /robots.txt { access_log off; log_not_found off; } 

    access_log off; 
    error_log /var/log/nginx/my_site.app-error.log error; 
    rewrite_log on; 

    error_page 404 /index.php; 

    sendfile off; 

    # October CMS rewrites 
    location blog { 
     root /home/vagrant/my_site/public/blog; 

     try_files $uri $uri/ /index.php$is_args$args; 
    } 

    rewrite ^/blog/themes/.*/(layouts|pages|partials)/.*.htm /blog/index.php break; 
    rewrite ^/blog/bootstrap/.* /blog/index.php break; 
    rewrite ^/blog/config/.* /blog/index.php break; 
    rewrite ^/blog/vendor/.* /blog/index.php break; 
    rewrite ^/blog/storage/cms/.* /blog/index.php break; 
    rewrite ^/blog/storage/logs/.* /blog/index.php break; 
    rewrite ^/blog/storage/framework/.* /blog/index.php break; 
    rewrite ^/blog/storage/temp/protected/.* /blog/index.php break; 
    rewrite ^/blog/storage/app/uploads/protected/.* /blog/index.php break; 

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_intercept_errors on; 
     fastcgi_buffer_size 16k; 
     fastcgi_buffers 4 16k; 
     fastcgi_connect_timeout 300s; 
     fastcgi_send_timeout 120; 
     fastcgi_read_timeout 120; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 

} 

我能出現在/博客/後端頁面(雖然無樣式的CSS/JS),如果我添加以下指令:

rewrite ^/blog /blog/index.php break; 

請注意,通過上面的rewrite指令,/blog/index.php頁面的資源返回的結果是404,因此/blog/index.php頁面也是非風格的。但是,如果我刪除上述指令,鏈接將再次運行。

我是nginx的新手,並且設置了10月份的CMS,但無法弄清楚這一點。謝謝!

回答

2

我不使用十月的CMS,但看着你的配置,我不認爲所有這些重寫是必要的,你只需要設置正確的try_files部分。

你看起來還需要考慮一下你的根文件夾到底是什麼。我在這裏假定它是/home/vagrant/my_site/public/blog

鑑於此,這應該爲你工作:

Server { 

    .... 

    # Generally better to define root at server level 
    root /home/vagrant/my_site/public/blog; 

    location/{ 
     try_files $uri $uri/ /index.php; 
    } 

    # Use this instead if root folder is /home/vagrant/my_site/public 
    #location /blog { 
    # try_files $uri $uri/ /blog/index.php; 
    #} 


    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_intercept_errors on; 
     fastcgi_buffer_size 16k; 
     fastcgi_buffers 4 16k; 
     fastcgi_connect_timeout 300s; 
     fastcgi_send_timeout 120; 
     fastcgi_read_timeout 120; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 
+0

根文件夾是正確的,因爲最初注意到'/家庭/流浪者/ my_site/public'我試圖加十月CMS到一個現有的laravel應用程序,其中10月CMS只處理應用程序的博客和幫助部分。重寫如OctoberCMS站點上的配置文檔中所述:https://octobercms.com/docs/help/installation#nginx-configuration – Jon

+0

建議的配置似乎有點可疑,因爲它沒有任何關於PHP的位置和重寫似乎只是發送一切index.php通常複製try_files將做什麼。不太確定誰寫的真正理解Nginx。嘗試我的建議配置,看看。我發佈了你擁有的任何根配置選項。如果需要,您還可以添加重寫。即使事實證明他們實際上並不需要,他們也沒有真正的傷害。 – Dayo

+0

好吧 - 它看起來像你的位置博客{....}'修復了這個技巧(同時從'rewrite'指令中刪除'/ blog'(這是我在那裏工作的nginx無能爲力,現在修復 - 謝謝! (只要他們允許,我會盡快給予賞金)。 – Jon