upstream phpfpm { #server unix:/var/run/php5-fpm.sock; server 127.0.0.1:9000; } server { listen 80; # Specify this vhost’s domain name server_name lxy.me; root /home/lxy.me/public; index index.php index.html index.htm; # Specify log locations for current site access_log /home/lxy.me/log/access.log; error_log /home/lxy.me/log/error.log warn; # Typically I create a restrictions.conf file that I then include across all of my vhosts #include conf.d/restrictions.conf; # BEGIN restrictions.conf # Disable logging for favicon location = /favicon.ico { log_not_found off; access_log off; } # Disable logging for robots.txt location = /robots.txt { allow all; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /\. { deny all; access_log off; log_not_found off; } # END restrictions.conf # Typically I create a yiiframework.conf file that I then include across all of my yii vhosts #include conf.d/yiiframework.conf; # I’ve included the content of my yiiframework.conf in-line for this example # BEGIN yiiframework.conf # Block access to protected, framework, and nbproject (artifact from Netbeans) location ~ /(protected|framework|nbproject) { deny all; access_log off; log_not_found off; } # Block access to theme-folder views directories location ~ /themes/\w+/views { deny all; access_log off; log_not_found off; } # Attempt the uri, uri+/, then fall back to yii’s index.php with args included # Note: old examples use IF statements, # which nginx considers evil, this approach is more widely supported location / { try_files $uri $uri/ /index.php?$args; } # END yiiframework.conf # Tell browser to cache image files for 24 hours, # do not log missing images # I typically keep this after the yii rules, # so that there is no conflict with content served by Yii location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 24h; log_not_found off; } # Block for processing PHP files # Specifically matches URIs ending in .php location ~ \.php$ { try_files $uri =404; # Fix for server variables that behave differently under nginx/php-fpm than typically expected fastcgi_split_path_info ^(.+\.php)(/.+)$; # Include the standard fastcgi_params file included with nginx include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_index index.php; # Override the SCRIPT_FILENAME variable set by fastcgi_params fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Pass to upstream PHP-FPM; This must match whatever you name your upstream connection fastcgi_pass phpfpm; } }