In our previous blog about nginx Server, we have described why nginx is better than apache due to its event driven approach and how to setup nginx for basic php use but in this article we will help you to configure nginx in more practical way so that you can run various frameworks like Magento, Joomla, Prestashop etc on nginx without any trouble.
First of all its very important to understand the difference between apache and nginx, nginx does not support the .htaccess file. So due to this you have to write down all the rules in nginx vhost configuration file which is also depends on the framework.
Lets take an example to run Magento with NGINX.
- Create a vhost or site configuration file in “/etc/nginx/conf.d/DOMAIN.conf” and copy the following content into it.
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 DOMAIN.com *.DOMAIN.com; ## Domain is here twice so server_name_in_redirect will favour the www root /var/www/; //Document root of your website location / { index index.php index.html; ## Allow a php 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 /. { ## 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 unix:/var/run/php5-fpm.sock; 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 } 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 unix:/var/run/php5-fpm.sock; 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 } }
Note -: you have to remove the "/etc/nginx/sites-available/default" or change the server port in the default file to prevent the port conflict.
- Edit the DOMAIN.com with your website domain and make sure that you have entered the correct document root of your website.
- Unzip magento files in /var/www/ folder according to this configuration.
- Restart your nginx and php5-fpm.
After that you will be able to run Magento Store on nginx server which is more efficient as compared on apache.
Be the first to comment.