我有一个带有登录表单的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