if ($host != 'www.xx27.net' ) {
rewrite ^/(.*)$ http://www.xx27.net/$1 permanent;
#proxy_set_header $Host "www.xx27.net";
}
加上这个参数会报错proxy_set_header
错误意思是这个地方不支持这个参数
那我该如何用呢?
proxy_set_header 是用在 proxy 的模块里,
没用 proxy 功能,就没什么作用吧。
就我有现成使用 proxy 模块的例子来测试:
<pre class="c" name="code"> location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header Host $http_host;
proxy_set_header Host iThelp.ithome.com.tw;
proxy_redirect off;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (!-f $request_filename) {
proxy_pass http://my_app;
break;
}
client_max_body_size 100m;
}
如果设定成功的话,
是在后端的 my_app 端的 http 环境变数里的 HTTP_HOST 会显示所指定的值。
如果想在 rewrite 后加上 header,
应是可用 add_header,
但在 rewrite 上加 Host 好像没那么必要。
所以,如果您的机器有提供多个虚拟主机服务Virtual Host的话,
您可在 server_name _; 的这个缺省名称下设这个rewrite的规则:
<pre class="c" name="code">rewrite ^/(.*)$ http://www.xx27.net/$1 permanent;
并且再设其他的 server_name www.xx27.net; 这区块,
(如果 www.xx27.net 是同一台机器的话)
来指定这virtual host的设定。
这样应不需用到 proxy_set_header 的设定。