我正在开发一个更大的基于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上进行开发?
非常感谢您的时间和精力。
答案 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)