2013-04-17 47 views
1

我想安裝Magento的其他副本到子文件夾。它應該與URL重寫一起工作。請電話我有什麼變化,我應該在默認配置做(可以在這裏還發現了 - http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/configuring_nginx_for_magento):在子文件夾中運行的Magento的Nginx配置

server { 
    listen 80; 
    server_name DOMAIN.com; 
    rewrite/$scheme://www.$host$request_uri permanent; ## Forcibly prepend a www 
} 

server { 
    listen 80 default; 
## SSL directives might go here 
    server_name www.DOMAIN.com *.DOMAIN.com; ## Domain is here twice so server_name_in_redirect will favour the www 
    root /var/www/vhosts/DOMAIN.com; 

    location/{ 
     index index.html index.php; ## Allow a static html file to be shown first 
     try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler 
     expires 30d; ## Assume all files are cachable 
    } 

    ## These locations would be hidden by .htaccess normally 
    location ^~ /app/    { deny all; } 
    location ^~ /includes/   { deny all; } 
    location ^~ /lib/    { deny all; } 
    location ^~ /media/downloadable/ { deny all; } 
    location ^~ /pkginfo/   { deny all; } 
    location ^~ /report/config.xml { deny all; } 
    location ^~ /var/    { deny all; } 

    location /var/export/ { ## Allow admins only to view export folder 
     auth_basic   "Restricted"; ## Message shown in login window 
     auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword 
     autoindex   on; 
    } 

    location /. { ## Disable .htaccess and other hidden files 
     return 404; 
    } 

    location @handler { ## Magento uses a common front handler 
     rewrite//index.php; 
    } 

    location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler 
     rewrite ^(.*.php)/ $1 last; 
    } 

    location ~ .php$ { ## Execute PHP scripts 
     if (!-e $request_filename) { rewrite//index.php last; } ## Catch 404s that try_files miss 

     expires  off; ## Do not cache dynamic content 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_param HTTPS $fastcgi_https; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores 
     fastcgi_param MAGE_RUN_TYPE store; 
     include  fastcgi_params; ## See /etc/nginx/fastcgi_params 
    } 
} 
+0

您的其他安裝是否有不同的域名?或只是/目錄/添加到主域? –

+0

just/directory /添加到主域 – freento

+0

配置這將是一個頭痛的問題。你能解釋一下你爲什麼要這樣嗎? – Melvyn

回答

1

我有一個解決方案,它主要的工作,在這裏更詳細描述:

Magento stores in subfolders using nginx proxy_pass

我使用proxy_pass重寫URL並根據URL子目錄將它發送到單獨的Nginx服務器指令。第二個服務器指令設置商店代碼,Magento處理其餘的。我不確定這是大多數優雅的解決方案,但它的工作原理。

server { 
    listen 80 default; 

    server_name www.DOMAIN.com *.DOMAIN.com; 
    root /var/www/vhosts/DOMAIN.com; 

    ## Serve static files from the server on 80 
    location ^~ /media/ {} 
    location ^~ /skin/ {}              
    location ^~ /js/ {}              
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|swf|fla)$ {      
     expires 1y;                
     log_not_found off;              
    } 


    location /STORE_CODE { 
     rewrite   ^/STORE_CODE/(.*) /$1 break;        
     proxy_pass  http://localhost:82;         
     proxy_set_header X-Real-IP $remote_addr; 
    } 

    location/{ 
     proxy_pass  http://localhost:81;         
     proxy_set_header X-Real-IP $remote_addr; 
    } 
} 

然後使用您現有的configs像這樣創造的端口81和82服務器指令:

server { 
    listen localhost:81 default; # Make sure you change the port here! 
... # Same configuration otherwise 
} 

server { 
    listen localhost:82 default; # Make sure you change the port here! 
... # Same configuration, except for: 

    location ~ .php$ { ## Execute PHP scripts 
     if (!-e $request_filename) { rewrite//index.php last; } ## Catch 404s that try_files miss 

     expires  off; ## Do not cache dynamic content 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_param HTTPS $fastcgi_https; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param MAGE_RUN_CODE store_code; ## CHANGE THIS TO YOUR STORE CODE! 
     fastcgi_param MAGE_RUN_TYPE store; 
     include  fastcgi_params; ## See /etc/nginx/fastcgi_params 
} 

你會想你的第二個店的BASE_URL設置爲http://www.DOMAIN.com/STORE_CODE/。 Magento應該照顧其餘的。

希望這會有所幫助!