Difference between #2 and #1 of Using Yii with Nginx and PHP-FPM

Using Yii with Nginx
nginxnginx, php-fpm, php5-fpm, rewrite, ubuntu
The full configurationThis config is here, let's
explain it later.built on an Ubuntu 11.04 server.
Software is nginx, php-fpm (php5-fpm).
For performance, it's recommended to run php-fpm in SOCKET mode, instead of
accessing via IP:PORT. That is the method shown below.

[php]# Implement upstream connection to PHP-FPM
# "phpfpm" here is a name for this upstream connection, which you can
# I create a custom upstream connection per vhost, to better segregate PHP
processes by vhost
# To do the same, you need a unique upstream name, and a unique filename for
your php5-fpm.sock file
upstream phpfpm {
    server unix:/var/run/php5-fpm.sock;

server {
    listen# Listening on port 80 without an IP address is only
recommended if you are not running multiple v-hosts
    #listen       80;
    # Bind to the public IP bound to your domain
    listen 123.456.789.012:80;
    # Specify this vhost's domain name
    server_name  example.com www.example.com;mydomainname.com;
    root /var/www/mydomainname.com/public;
    index index.php index.html index.htm;

    charset utf-8;# Specify log locations for current site
    access_log /var/www/mydomainname.com/log/access.log;
    error_log /var/www/mydomainname.com/log/error.log warn;

    access_log  logs/example.access.log  main;# Typically I
create a restrictions.conf file that I then include across all of my vhosts
    #include conf.d/restrictions.conf;
    # I've included the content of my restrictions.conf in-line for this

    location /# BEGIN restrictions.conf
    # Disable logging for favicon
    location = /favicon.ico {
        root   /home/yeegt/yiigt;
        index  index.php;
        try_files $uri $uri/ /index.php?$args;
        log_not_found off;
        access_log off;

    location ~ ^/protected/# Disable logging for robots.txt
    location = /robots.txt {
        deny  all;
        allow all;
        log_not_found off;
        access_log off;

    location ~*.(js|jpg|jpeg|gif|png|ico)$# Deny all attempts to
access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
    location ~ /\. {
        root /home/example/yii-app;
        expires 356d;
        add_header Cache-Control public;
        deny all;
        access_log off;
        log_not_found off;
    # END restrictions.conf

    location ~ \.php$ {
        root           /home/example/yii-app;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME 
        include        fastcgi_params;# 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

        set $path_info $request_uri;# BEGIN yiiframework.conf
    # Block access to protected, framework, and nbproject (artifact from
    location ~ /(protected|framework|nbproject) {
        deny all;
        access_log off;
        log_not_found off;

        if ($request_uri# Block access to theme-folder views
    location ~
"^(.*)(\?.*)$")/themes/\w+/views {
            set $path_info $1;
        deny all;
        access_log off;
        log_not_found off;

    # Attempt the uri, uri+/, then fall back to yii's index.php with args
    # 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_index index.php;
        # Override the SCRIPT_FILENAME variable set by fastcgi_params
        fastcgi_param PATH_INFO $path_info; SCRIPT_FILENAME 
        # Pass to upstream PHP-FPM; This must match whatever you name your
upstream connection
        fastcgi_pass phpfpm;

PHP-FPM config is below, have not had to optimize settings yet as they work
fine for my usage.
Replace any instance of USER,GROUP with the user and group you want to run the
website under.
Typical is www-data in Ubuntu.

listen = /var/run/php5-fpm.sock
listen.owner = USER
listen.group = GROUP
listen.mode = 0666
;listen.backlog = 4096
user = USER
group = GROUP
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.status_path = /fpm-status
ping.path = /fpm-ping
ping.response = pong
chdir = /var/www/mydomainname.com
catch_workers_output = yes

request_terminate_timeout = 180s

; The following php_admin_* settings below, override php.ini settings
php_admin_value[error_log] = /var/www/mydomainname.com/log/fpm-php-error.log

; The following settings are specifically used on development sites
; Should review/disable for production site
php_admin_value[max_execution_time] = 180
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 320m
php_admin_value[error_reporting] = E_ALL
php_admin_flag[display_errors] = on
php_admin_flag[display_startup_errors] = on
Write new article