支持access的php框架,NginX友好的PHP框架

使用nginx的Symfony 1.4非常棒.我已经完成了调整,这里是我的生产配置的概括,我可以保证适合生产使用.

server {

listen 80;

server_name mysite.com;

root /var/www/mysite.com/web;

access_log /var/log/nginx/mysite.com.access.log;

error_log /var/log/nginx/mysite.com.error.log;

location ~ ^/(index|frontend|frontend_dev|backend|backend_dev)\.php${

include fastcgi_params;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param HTTPS off;

fastcgi_pass 127.0.0.1:9000;

}

location / {

index index.php;

try_files $uri /index.php?$args;

}

}

server {

listen 443;

ssl on;

ssl_certificate /etc/ssl/certs/mysite.com.crt;

ssl_certificate_key /etc/ssl/private/mysite.com.key;

server_name mysite.com;

root /var/www/mysite.com/web;

access_log /var/log/nginx/mysite.com.access.log;

error_log /var/log/nginx/mysite.com.error.log;

location ~ ^/(index|frontend|frontend_dev|backend|backend_dev)\.php${

include fastcgi_params;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param HTTPS on;

fastcgi_pass 127.0.0.1:9000;

}

location / {

index index.php;

try_files $uri /index.php?$args;

}

}

PHP 5.4注意事项

dotdeb附带的php5-fpm 5.4现在默认使用套接字而不是环回.如果您使用的是PHP 5.4并且使用上述配置时出现错误的网关错误,请尝试使用unix:/var/run/php5-fpm.sock替换127.0.0.1:9000的所有实例.

php-fpm 5.4还新近将可以解析为PHP的文件扩展名限制为security.limit_extensions中指定的文件扩展名.如果您修改了位置正则表达式以包含除.php之外的其他文件扩展名,则可能会感兴趣.以下安全说明仍适用.

安全说明

此配置仅使用PHP解析文件index.php,frontend.php,frontend_dev.php,backend.php和backend_dev.php.

使用php和nginx,不仅仅是使用symfony

location \.php${

...

}

导致与使用pathinfo的URL相关的安全漏洞,如:/index.php/foo/bar.

常见的解决方法是在php.ini中设置fix_pathinfo = 0.这打破了pathinfo URL,symfony依赖于它们.这里使用的解决方案是显式指定被解析为php的文件.

平台

这对于使用dotdeb用于nginx和php-fpm软件包的Debian Squeeze系统以及使用ppa / brianmercer用于php-fpm的Ubuntu 10.04 Lucid Lynx系统来说是安全的.它可能或可能不起作用,并且在其他系统上是安全的.

使用说明

要添加另一个PHP文件additionalfile.php以进行解析,请在两个位置块中使用此语法:

location~ ^(index | frontend | frontend_dev | backend | backend_dev | additionalfile).php ${

??…

}

编辑:Symfony 2.0已经发布!这是配置,改编自上面的1.4配置:

server {

listen 80;

server_name symfony2;

root /var/www/symfony2/web;

error_log /var/log/nginx/symfony2.error.log;

access_log /var/log/nginx/symfony2.access.log;

location / {

index app.php;

if (-f $request_filename) {

break;

}

rewrite ^(.*)$/app.php last;

}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ (app|app_dev).php {

include fastcgi_params;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param HTTPS off;

fastcgi_pass 127.0.0.1:9000;

}

}

server {

listen 443;

server_name symfony2;

root /var/www/symfony2/web;

ssl on;

ssl_certificate /etc/ssl/certs/symfony2.crt;

ssl_certificate_key /etc/ssl/private/symfony2.key;

error_log /var/log/nginx/symfony2.error.log;

access_log /var/log/nginx/symfony2.access.log;

location / {

index app.php;

if (-f $request_filename) {

break;

}

rewrite ^(.*)$/app.php last;

}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ (app|app_dev).php {

include fastcgi_params;

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

fastcgi_param HTTPS off;

fastcgi_pass 127.0.0.1:9000;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值