NGINX上的CodeIgniter生成了形式的HTTPS操作,而不是Apache



我有一个带有登录表单的CodeIgniter应用程序。我在Apache和Nginx上运行了它。在Apache上,一切正常,表单动作正常。但是在NGINX上,表单操作使用https而不是http(目前我不想要)。

我使用以下方式生成表格:

<?php echo form_open(site_url('/user/do_login')); ?>

它产生了以下内容:

<form action="https://example.com/index.php/user/do_login" method="post" accept-charset="utf-8">

如何强制它在nginx上生成http而不是https

假设您正在使用自动site_url检测,Codeigniter自己的HTTP/HTTPS检测依赖于$_SERVER['HTTPS']值,即CC_5实际上是将其设置为某物,即可为base_url生成http

检查您的默认fastcgi_params(通常是/etc/nginx/fastcgi_params),也许将其设置为空字符串或"关闭"以外的其他内容,您也可以将其从nginx配置强制使用,以"关闭":

fastcgi_param  HTTPS off;

如果您在Nginx的配置文件中使用一个server块对HTTP和HTTPS连接都使用,则可以使用映射来创建基于$scheme变量所需的值:

# somewhere inside http { ... }
map $scheme $php_https { default off; https on; }

并在fastcgi_param中引用它:

fastcgi_param  HTTPS $php_https;

在nginx框上与apache框中检查您的config.php。site_url返回您在$ config ['base_url'] config.php

中指定的内容

相关内容

最新更新