SSI goes to backend
Marcus Clyne
maccaday at gmail.com
Fri Sep 4 18:34:21 MSD 2009
Igor Sysoev wrote:
> On Fri, Sep 04, 2009 at 03:14:42PM +0300, Marcus Clyne wrote:
>
>
>> Hi,
>>
>>> What if for example you want to ssi from a different domain name so
>>> the html is served from http://www.domain.com/ but the ssi uses
>>> www.other.com (which is also hosted on the same nginx instance).
>>>
>>>
>>>
>> You could set the SSI command to
>>
>> <!--# include virtual="/domain2/oth-domain-url" -->
>>
>> Then in your config have
>>
>> location /domain2/ {
>> internal; # if you don't set this location to internal then your
>> web server could be used as a public proxy to that domain
>> proxy_pass http://domain2.com;
>> ...
>> }
>>
>> This would make a sub-request for http://domain2.com/oth-domain-url.
>>
>> AFAIK you need to set the domain2 statically in your config file, i.e.
>> you can't use a regex in the domain name.
>>
>
> No, you may use regex and then resolve a name:
>
> resvoler 127.0.0.1;
>
> location /p/(\w+) {
> proxy_pass http://$1;
> }
>
I tried that, but am getting the following message in the error log:
2009/09/04 17:10:10 [error] 18834#0: *1 zero length URI to proxy,
client: 127.0.0.1, server: localhost, request: "GET /ssi/test.shtml
HTTP/1.1", subrequest: "/proxy-google/google.com", host: "localhost"
The locations I've tried are:
location ~ /proxy-google/(\w+)
location ~ /proxy-google/(.+)
with proxy_pass http://$1;
and the error message is the same.
I even tried doing
location ~ /proxy-google/(.+) {
set $proxy_url $1;
proxy_pass http://$proxy_url;
}
and that gave the same message.
Doing a statically-defined proxy-pass like above works without the
resolver directive. I don't have a DNS server running, but I wouldn't
have thought that I'd need one, would I?
This is true in 0.8.11 and 0.8.13.
Marcus.
More information about the nginx
mailing list