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

标签 performance apache .htaccess nginx

我正在开发一个更大的基于 Web 的项目,该项目可能在后期(或更多)阶段每分钟必须处理数百个请求。

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

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

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

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

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

这基本上是我使用 .htaccess 的三件事。尤其是第一个,基本上可以让整个应用程序正常工作。

但是对于这个项目,我真的在努力保持清洁和最新的解决方案明智。我的可能性是什么?我可以在哪里提高我的表现?以及如何在不使用 .htaccess 的情况下解决上述 3 个问题以在 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;
   } 
}

关于performance - 其他解决方案,而不是 NGINX 的 .htaccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061319/

相关文章:

performance - 我看不到用于测量功耗的 perf 的 power/energy-cores 选项

python - Django - 带有 mod_wsgi 的 Apache 不提供静态文件

apache - 如何解决 .htaccess RewriteRule 冲突?

mysql - 在 phpmyadmin 中创建额外的身份验证

database - Firebird 数据库的 Web 界面

php - codeigniter 无法在 Linux 上运行

performance - 缩小会影响 Node.js 的性能吗?

Java 文件 I/O 性能随时间下降

javascript - 当响应非常大时,JQuery ajax 卡住 ui

php - 致命的!用户 postgres 的身份验证失败,多个操作系统,没有任何工作