Omi*_*gar 2 php apache https codeigniter nginx
我有一个带登录表单的Codeigniter应用程序.我在Apache和Nginx上运行它.在Apache上,一切正常,表单操作正常.但是在Nginx上,表单操作使用https而不是http(目前我不想要).
我用这个生成表单:
<?php echo form_open(site_url('/user/do_login')); ?>
Run Code Online (Sandbox Code Playgroud)
它产生了这个:
<form action="https://example.com/index.php/user/do_login" method="post" accept-charset="utf-8">
Run Code Online (Sandbox Code Playgroud)
如何强制它生成http而不是httpsNginx?
假设您正在使用自动site_url检测,Codeigniter自己的http/https检测依赖于实际设置为某个$_SERVER['HTTPS']值的值off,以生成httpbase_url.
检查你的默认fastcgi_params(通常/etc/nginx/fastcgi_params),也许它将它设置为一个空字符串或"off"以外的东西,你也可以从nginx配置强制这个"关闭":
fastcgi_param HTTPS off;
Run Code Online (Sandbox Code Playgroud)
如果server在nginx的配置文件中使用一个块用于http和https连接,则可以使用映射根据$scheme变量创建所需的值:
# somewhere inside http { ... }
map $scheme $php_https { default off; https on; }
Run Code Online (Sandbox Code Playgroud)
并参考fastcgi_param:
fastcgi_param HTTPS $php_https;
Run Code Online (Sandbox Code Playgroud)