其他解决方案,而不是NGINX的.htaccess

时间:2012-06-16 06:18:32

标签: performance apache .htaccess nginx

我正在开发一个更大的基于Web的项目,可能需要在稍后阶段(或更多)每分钟处理几百个请求。

我从未使用NGINX,但是阅读与apache的比较,似乎我应该去NGINX路线。阅读它,我总是看到'.htaccess'文件是一个懒惰的解决方案。现在,我想避免依赖.htaccess文件,但我的问题是如何?

我的意思是 - 如果.htaccess被认为是懒惰的,hacky解决方案,那么这个问题的干净解决方案究竟是什么:

  • 将所有特定网址(CSS /图像除外)重定向到单个php文件(顺便说一下,如果像index.php这样的单个文件处理URL的话会对性能产生影响吗?并包含所需的模板?我应该避免这种情况,并分成几十个文件吗?)

  • 读取CSS文件中的PHP标签(“AddHandler application / x-httpd-php .css ...”)

  • 另一层登录(.htaccess身份验证,带有一个小弹出窗口)

这基本上就是我正在使用的三件事.htaccess for。特别是第一个,基本上使整个应用程序工作。

但是对于这个项目,我真的想保持清洁,并且最新,解决方案明智。我的可能性是什么?我在哪里可以提高我的表现?我怎样才能解决上面提到的3个问题,使用.htaccess,在NGINX上进行开发?

非常感谢您的时间和精力。

2 个答案:

答案 0 :(得分:4)

为了充分利用nginx,您必须了解它不是Web服务器(如Apache),而是代理。简单来说,它就像一个巨大的规则引擎,可以根据请求的模式匹配将内容传递给其他应用程序。

因此,要使用nginx运行PHP,您需要运行PHP的单独的服务器(或进程)。这可以是Apache,但PHP包含FastCGI Process Manager (FPM)

这是让你前进的基本样板:

server {
   listen 80;
   server_name www.example.com example.com;
   access_log /var/www/www.example.com/logs/access.log;
   error_log /var/www/www.example.com/logs/error.log;
   root /var/www/www.example.com/public_html;

   location / {
       index  index.html index.htm index.php;
       auth_basic            "Username Required";
       auth_basic_user_file  /etc/nginx/htpasswd;
   }

   location ~ (\.php|\.css)$ {
       try_files $uri =404;

       include /etc/nginx/fastcgi_params;
       fastcgi_index index.php;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       fastcgi_pass php;
   } 
}

答案 1 :(得分:0)