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

Posted

技术标签:

【中文标题】其他解决方案,而不是 NGINX 的 .htaccess【英文标题】:Other solutions, instead of .htaccess for NGINX 【发布时间】:2012-06-19 03:38:55 【问题描述】:

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

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

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

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

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

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

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

但对于这个项目,我真的在努力保持干净、最新的解决方案。我的可能性是什么?我在哪里可以提高我的表现?我如何解决上面提到的 3 个问题,而不使用 .htaccess,在 NGINX 上进行开发?

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

【问题讨论】:

【参考方案1】:

为了充分利用 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;
    

【讨论】:

非常感谢,我一设置好nginx和php fastcgi就试试配置【参考方案2】:

问题是题外话,但可以帮助你:

http://nginx.org/en/docs/http/converting_rewrite_rules.html http://www.anilcetin.com/convert-apache-htaccess-to-nginx/

【讨论】:

以上是关于其他解决方案,而不是 NGINX 的 .htaccess的主要内容,如果未能解决你的问题,请参考以下文章

来自用户而不是 Nginx 反向代理服务器的 REMOTE_ADDR IP

提供 PHP 文件作为下载,而不是执行它们

我为什么推荐大家使用 Nginx 而不是 Apache?

怎么检查nginx 是不是支持https

text htacces

markdown htacces.md