如何将php SERVER_PORT var设置为80,在varnish后面?

如何强制PHP读取SERVER_PORT为80,当Apache侦听8080和清漆听80?

如果我的apache虚拟主机设置为8080,SERVER_PORT将始终为8080,这让我感到困扰,因为在应用程序的许多部分,有些链接是通过SERVER_NAME和SERVER_PORT一起计算的,所以我需要的是“相信” SERVER_PORT是80,所以所有的链接都会通过清漆

像这样改变你的设置:

  • apache在127.0.0.1,80端口上运行
  • 清漆运行在192.168.1.1端口80(其中192.168.1.1是你的实际的真实IP)

这样,两个守护进程都在端口80上运行。只有当你从不需要从本地机器外部到达Apache时,这种方式才有效。

我不认为有任何干净的方法来做到这一点。 是否有一些文件,包括每个PHP脚本需要这样设置? 如果是这样,你可以做这样的事情:

$_SERVER['SERVER_PORT'] = 80; 

那么它不干净…但在一个巨大的代码库,你可能会考虑使用“auto_prepend_file”通过php.ini或.htaccess中,您可以重置$ _SERVERvariables。 (见: http : //php.net/manual/en/ini.core.php )

但是,这不是一个干净的解决scheme;-)