Yii使用nginx的配置

jerry Yii 2015年11月23日 收藏
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;
  }
}