【问题标题】:Nginx configuration for a wordpress blog in a subfolder of magento rootmagento root 子文件夹中 wordpress 博客的 Nginx 配置
【发布时间】:2016-06-28 00:00:28
【问题描述】:

我已经安装了一个 Magento 扩展,以使 wordpress 博客与 Magento 集成。 基本上,WP 位于 Magento 根目录的子目录中。我想创建多个带有子目录的站点,但由于 nginx 配置,我无法使其工作。

Wordpress 位于他的 /wp 子目录 (http://example.com/wp/wp-admin/) 中,其他站点可通过 http://example.com/wp/ca/wp-admin/http://example.com/wp/en/wp-admin/ 访问

这是我目前得到的:

server
{
    server_name dev.example.com;
    access_log /var/log/nginx/example.access.log;-
    error_log /var/log/nginx/example.error.log;
    root /var/www/example;

    location ^~ /wp {
        index index.php index.html index.htm;
        try_files $uri $uri/ /wp/index.php?q=$uri&$args;

        # Multisite
        if (!-e $request_filename) {
            rewrite /wp-admin$ $scheme://$host$uri/ permanent;         
            rewrite ^/wp(/[^/]+)?(/wp-.*) /wp$2 last;      
            rewrite ^/wp(/[^/]+)?(/.*\.php)$ /wp$2 last;
        }

        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass 127.0.0.1:9000;
        }   
    }  

    set             $mage_developer true;
    set             $mage_code es; 
    set             $mage_type store;
    include         snippets.d/magento-site;-
}

在 sn-ps.d/magento-site 中:

# Serve static pages directly,
# otherwise pass the URI to Magento's front handler
location / {
    index       index.php;
    try_files   $uri $uri/ @handler;
    expires     30d;-
}

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

# Allow admins only to view export folder
location /var/export/ {
    auth_basic               "Restricted";
    auth_basic_user_file     htpasswd;
    autoindex                on; 
}

# 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; }

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

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

# Execute PHP scripts
location ~ .php$ {

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

    expires        off;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
    fastcgi_param  MAGE_RUN_CODE $mage_code;
    fastcgi_param  MAGE_RUN_TYPE $mage_type;
    fastcgi_ignore_client_abort on;
    fastcgi_read_timeout 900s; # 15 minutes
}

感谢您的帮助。

【问题讨论】:

    标签: wordpress magento nginx


    【解决方案1】:

    希望将完整的 conf 文件传递​​给需要进行配置的任何人。请记住,许多文件路径在您的服务器配置中是唯一的。

    请注意,您需要根据服务器上的文件路径调整以下参数:

    server_name domain.com www.domain.com;
    ssl_certificate       /sslpath/domain.com.crt;
    ssl_certificate_key  /sslpath/domain.com.key;
    root      /webrootpath/domain.com;
    rewrite ^/blogpath(.*) /blogpath/index.php?q=$1;
    location ^~ /blogpath {
    error_log /data/log/nginx/domain.com_error.log;
    access_log /data/log/nginx/domain.com_access.log;
    

    这里是完整的 nginx 配置文件:

    server {
       listen      80;
       server_name domain.com www.domain.com;
       rewrite     ^   https://$server_name$request_uri? permanent;
    }
    
    server {
       listen 443;
       server_name domain.com www.domain.com;
    
       ssl on;
       ssl_certificate       /sslpath/domain.com.crt;
       ssl_certificate_key  /sslpath/domain.com.key;
       ssl_session_timeout 30m;
    
    root      /webrootpath/domain.com;
    index     index.php;
    location / {
       index index.html index.php;
       try_files $uri $uri/ @handler;
       expires 30d;
    }
    
    location @wp {
       rewrite ^/blogpath(.*) /blogpath/index.php?q=$1;
    }
    
    location ^~ /blogpath {
       root /webrootpath/domain.com;
       index index.php index.html index.htm;
       try_files $uri $uri/ @wp;
    
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass 127.0.0.1:9000;
    }
    } 
    
    location ~    ^/(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; }
    location /var/export/ { internal; }
    location /. { return 404; }
    location @handler { rewrite / /index.php; }
    location ~* .php/ { rewrite ^(.*.php)/ $1 last; }
    location ~* .php$ {
       if (!-e $request_filename) { rewrite / /index.php last; }
       expires off;
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_param MAGE_RUN_CODE default;
       fastcgi_param MAGE_RUN_TYPE store;
       include fastcgi_params;
    }
    
    error_log /data/log/nginx/domain.com_error.log;
    access_log /data/log/nginx/domain.com_access.log;
    
    }
    

    【讨论】:

      【解决方案2】:

      好吧,最后,它将所有对博客的请求传递给 Apache,并在相应的虚拟主机中创建站点。

      location ~ ^/blog {
       proxy_pass          http://apache:80;
       proxy_set_header    X-Real-IP  $remote_addr;
       proxy_set_header    Host $host;
       proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_read_timeout  6000s;
      }
      

      如果有人成功使其仅适用于 Nginx,我期待他的回答:)

      【讨论】:

        【解决方案3】:

        为什么要运行 Apache?运行 2 个网络服务器没有意义。 尝试将此添加到您的 nginx 配置中。

        location @wp {
        rewrite ^/wp(.*) /wp/index.php?q=$1;
        }
        
        location ^~ /wp {
        root /var/www/example;
        index index.php index.html index.htm;
        try_files $uri $uri/ @wp;
        
        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass 127.0.0.1:9000;
        }
        } 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-28
          • 1970-01-01
          • 2019-11-17
          • 2020-09-04
          相关资源
          最近更新 更多