Created
March 25, 2014 17:24
-
-
Save vnykmshr/9766795 to your computer and use it in GitHub Desktop.
Nginx config for a sample magento setup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## nginx.conf | |
####################################################################### | |
# | |
# This is the main Nginx configuration file. | |
# | |
# More information about the configuration options is available on | |
# * the English wiki - http://wiki.nginx.org/Main | |
# | |
####################################################################### | |
#---------------------------------------------------------------------- | |
# Main Module - directives that cover basic functionality | |
# | |
# http://wiki.nginx.org/NginxHttpMainModule | |
# | |
#---------------------------------------------------------------------- | |
user nginx; | |
worker_processes 2; | |
error_log /var/log/nginx/error.log; | |
#error_log /var/log/nginx/error.log notice; | |
#error_log /var/log/nginx/error.log info; | |
pid /var/run/nginx.pid; | |
#---------------------------------------------------------------------- | |
# Events Module | |
# | |
# http://wiki.nginx.org/NginxHttpEventsModule | |
# | |
#---------------------------------------------------------------------- | |
events { | |
worker_connections 1024; | |
} | |
#---------------------------------------------------------------------- | |
# HTTP Core Module | |
# | |
# http://wiki.nginx.org/NginxHttpCoreModule | |
# | |
#---------------------------------------------------------------------- | |
http { | |
include /etc/nginx/mime.types; | |
default_type application/octet-stream; | |
map $scheme $fastcgi_https { ## Detect when HTTPS is used | |
default off; | |
https on; | |
} | |
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' | |
'$status $body_bytes_sent "$http_referer" ' | |
'"$http_user_agent" "$http_x_forwarded_for"'; | |
access_log /var/log/nginx/access.log main; | |
sendfile on; | |
tcp_nopush on; | |
tcp_nodelay on; | |
client_header_timeout 10m; | |
client_body_timeout 10m; | |
send_timeout 10m; | |
proxy_read_timeout 2m; | |
fastcgi_read_timeout 3m; | |
client_header_buffer_size 1k; | |
large_client_header_buffers 4 4k; | |
output_buffers 1 32k; | |
postpone_output 1460; | |
keepalive_timeout 60 15; | |
types_hash_max_size 2048; | |
## | |
# Gzip Settings | |
## | |
gzip on; | |
gzip_disable "msie6"; | |
gzip_comp_level 6; | |
#gzip_comp_level 9; | |
gzip_min_length 1100; | |
gzip_buffers 16 8k; | |
gzip_proxied any; | |
# gzip_http_version 1.1; | |
gzip_types text/plain application/xml text/css text/js text/xml application/x-javascript text/javascript application/json application/xml+rss; | |
# fastcgi nodes | |
### Below is example only | |
upstream base_backend { | |
#server unix:/var/run/php-fpm.sock; | |
server 127.0.0.1:9000; | |
} | |
# Load config files from the /etc/nginx/conf.d directory | |
include /etc/nginx/conf.d/*.conf; | |
include /etc/nginx/conf.d/sites-enabled/*; | |
} | |
## base.conf | |
server { | |
listen 80; | |
server_name base.com; | |
rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www | |
} | |
server { | |
listen 80 default; | |
server_name www.base.com *.base.com x.x.x.x; ## Domain is here twice so server_name_in_redirect will favour the www | |
root /var/www/vhosts/base.com/httpdocs; | |
## These locations would be hidden by .htaccess normally | |
autoindex off; | |
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 = /RELEASE_NOTES.txt { deny all; } | |
location = /LICENSE_AFL.txt { deny all; } | |
location = /LICENSE.html { deny all; } | |
location = /LICENSE.txt { deny all; } | |
location = /php.ini.sample { deny all; } | |
location = /index.php.sample { deny all; } | |
location /. { return 404; } | |
location ~* \.(png|gif|jpg|jpeg|css|js|swf|ico|txt|xml|bmp|pdf|doc|docx|ppt|pptx|zip)$ { | |
access_log off; | |
expires 30d; | |
} | |
location ~* ^(/downloader|/js|/404|/report)(.*) { | |
include /etc/nginx/fastcgi_params; | |
fastcgi_index index.php; | |
fastcgi_param SCRIPT_FILENAME $document_root$1/index.php$1; | |
fastcgi_read_timeout 600; | |
fastcgi_pass base_backend; | |
} | |
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 | |
expires off; ## Do not cache dynamic content | |
fastcgi_pass base_backend; | |
fastcgi_param HTTPS $fastcgi_https; | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |
include fastcgi_params; ## See /etc/nginx/fastcgi_params | |
} | |
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 | |
if ($request_uri ~* "\.(png|gif|jpg|jpeg|css|js|swf|ico|txt|xml|bmp|pdf|doc|docx|ppt|pptx|zip)$") { | |
expires max; | |
} | |
# set fastcgi settings, not allowed in the "if" block | |
include /etc/nginx/fastcgi_params; | |
fastcgi_param SCRIPT_FILENAME $document_root/index.php; | |
fastcgi_param SCRIPT_NAME /index.php; | |
fastcgi_param MAGE_RUN_CODE default; | |
fastcgi_param MAGE_RUN_TYPE store; | |
# rewrite - if file not found, pass it to the backend | |
if (!-f $request_filename) { | |
fastcgi_pass base_backend; | |
break; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment