我正在为运行Magento的nginx.conf工作,该网站的大部分工作,magento是使用php-fpm运行。
但它的某些部分仍然不起作用,我已经尝试了网络上的每个维基、博客等。
我的问题是,每当我在内容管理系统的页面和模块上有一个Javascript弹出窗口,主要是插件所见即所得编辑器(/js/ tiny_mce /tiny_mce/advimage/image.htm等),他们就会打开一个page not found。
我不知道该怎么做才能正确显示这个编辑器。
此外,下载程序也不显示。
它们似乎都在与根目录不同的文件夹中使用自己的index.php,所以我应该将索引更改为该目录吗?
就像$document_root/downloader/index.php一样?
发布于 2011-10-06 01:42:27
我强烈建议您阅读并遵循nginx primer by Martin Fjordvald。
我对Magento使用以下配置。它不仅工作得很好,它还关闭了图片等的access_log,并有一个特殊的php-fpm配置。请注意,服务器根是在服务器块中指定的。有几个配置文件在位置块中错误地指定了它。
Magento nginx配置文件:(请务必相应替换所有路径和域名)
server {
listen 80;
#listen 443 default ssl;
server_name DOMAIN.COM;
#rewrite requests to www
rewrite ^ $scheme://www.DOMAIN.COM$request_uri permanent;
}
server {
listen 80;
#listen 443 default ssl;
#ssl_certificate /path/to/ssl.crt;
#ssl_certificate_key /path/to/ssl.key;
server_name www.DOMAIN.COM;
# most likely /var/www/...
root /path/to/files;
include /etc/nginx/restrictions.conf;
location / {
index index.php;
if ($request_uri ~* "\.(ico|css|js|gif|jpe?g|png)$") {
access_log off;
expires max;
}
try_files $uri $uri/ @handler;
}
# protect directories
location /app/ {
deny all;
}
location /includes/ {
deny all;
}
location /lib/ {
deny all;
}
location /lib/minify/ {
allow all;
}
location /media/downloadable/ {
deny all;
}
location /pkginfo/ {
deny all;
}
location /report/config.xml {
deny all;
}
location /var/ {
deny all;
}
location /var/export/ {
# restrict access to admins
auth_basic "Restricted";
auth_basic_user_file htpasswd;
autoindex on;
}
location @handler {
rewrite ^(.*) /index.php?$1 last;
}
# include php specific configuration
include /etc/nginx/php.conf;
}这是一个php-fpm特定的配置文件,它可以截获错误代码并正确拆分路径信息,这样您就可以在PHP中访问正确的路径部分。由于性能的提高,我还使用了Unix套接字而不是端口。还要注意,您不需要重复已经在fastcgi_params中指定的fastcgi_params。
fastcgi_intercept_errors on;
# this will allow Nginx to intercept 4xx/5xx error codes
# Nginx will only intercept if there are error page rules defined
# -- This is better placed in the http {} block as a default
# -- in that virtual host's server block
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# A handy function that became available in 0.7.31 that breaks down
# The path information based on the provided regex expression
# This is handy for requests such as file.php/some/paths/here/
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/phpfpm.sock;
}我的fastcgi_params配置文件针对小型服务器(<1GBRAM)进行了优化。请务必根据您的服务器性能调整您的服务器:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
fastcgi_connect_timeout 90;
fastcgi_send_timeout 180;
fastcgi_read_timeout 360;
fastcgi_buffer_size 1024k;
fastcgi_buffers 8 512k;
fastcgi_busy_buffers_size 1024k;
fastcgi_temp_file_write_size 1024k;
fastcgi_intercept_errors on;
fastcgi_pass_header *;发布于 2011-10-05 15:37:09
我们在mydomain.com/store中安装了magento,并对nginx使用next config:
server {
listen <needed ip(s)>:80;
server_name mydomain.com;
root /www/mydomain;
location ~ /\. {
deny all;
}
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
access_log off;
expires 30d;
}
location /store/ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/store/index.php;
fastcgi_param SCRIPT_NAME /store/index.php;
fastcgi_index index.php;
}
location /store/static/ { }
location /store/skin/ { }
location /store/media/ { }
location /store/errors/ { }
location ~* /store/errors/.*\.xml$ { deny all; }
location ~* /store/errors/.*\.phtml$ { deny all; }
location ~* /store/errors/.*\.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME /store/errors$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_read_timeout 600;
}
location /store/js/ { }
location ~* /store/js/.*\.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/store/js$fastcgi_script_name;
fastcgi_param SCRIPT_NAME /store/js$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_read_timeout 600;
}
}发布于 2011-10-04 15:28:52
您必须将所有.htaccess规则重写为ngnix配置才能使其正常工作。值得一读的http://www.nbs-system.co.uk/blog-2/magento-optimization-howto-en.html
https://stackoverflow.com/questions/7640267
复制相似问题