我正在开发一个较大的基于Web的项目,在以后的某个阶段(或更多)可能每分钟必须处理数百个请求.
我从没与NGINX一起工作过,但是用apache阅读比较,看来我可能应该走NGINX的路线.读到它,我总是看到’.htaccess’文件是一个懒惰的解决方案.现在,我想避免依赖.htaccess文件,但是我的问题是如何?
我的意思是-如果.htaccess被认为是懒惰,棘手的解决方案,那么针对此问题的干净解决方案到底是什么:
>将所有特定的URL(除了CSS / Images和类似的东西)重定向到单个php文件(顺便说一句,如果像index.php这样的单个文件处理URL并包括所需的模板,是否会对性能产生影响?我应该避免这种情况,并拆分成几十个文件吗?)
>在CSS文件中读取PHP标签(“ AddHandler application / x-httpd-php .css …”)
>另一层登录(.htaccess身份验证,带有一个小的弹出窗口)
这基本上是我使用.htaccess的三件事.尤其是第一个,基本上使整个应用程序都能工作.
但是对于这个项目,我实际上是在尝试保持清洁和最新的解决方案.我有什么可能?我在哪里可以提高表现?我该如何解决上述3个问题,而无法使用.htaccess在NGINX上进行开发?
非常感谢您的时间和精力.
解决方法:
为了充分利用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;
}
}