Problem with MediaWiki File page

HI,

I have following nginx configuration for a MediaWiki based site

server {
listen 174.36.130.243:80;
server_name webhostingneeds.com www.webhostingneeds.com;

    location ~* \.(js|css|rdf|xml|ico|txt|gif|jpg|png|jpeg|html)$ {
    root   /home/webhost/public_html/;
    access_log  /var/log/nginx/webhostingneeds.com_static.log;
    }

    location / {
        proxy_pass         http://174.36.130.243:81/;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For 

$proxy_add_x_forwarded_for;
client_max_body_size 1m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

The problem is when a file is uploaded to MediaWIki, i shows a page like

http://webhostingneeds.com/File:FILENAME.exten

For example

http://webhostingneeds.com/File:Averttv_device_property.jpg

Since the file extension is .jpg, nginx try to service this as static
content.

How i can set nginx to serve static files, pass anything starting with
/File: to apache ?

Thanks,

Santhosh

On Thu, Sep 22, 2011 at 02:14:04AM +0530, BizHat.com Support wrote:

Hi there,

    location ~* \.(js|css|rdf|xml|ico|txt|gif|jpg|png|jpeg|html)$ {
    root   /home/webhost/public_html/;
    access_log  /var/log/nginx/webhostingneeds.com_static.log;
    }
    location / {
        proxy_pass         http://174.36.130.243:81/;

(plus extra proxy settings)

    }

How i can set nginx to serve static files, pass anything starting with
/File: to apache ?

nginx configuration is based on location blocks. One request is handled
by one location.

Details at http://wiki.nginx.org/HttpCoreModule#location

Your current config has one location for urls that match a regex, such
that they end in one of 11 specific strings; plus one location for
everything else.

You want a new location for urls that start with one specific string,
and you want regex locations not to be tested if this location matches.

So do exactly that:

location ^~ /File: {
}

and inside that location block, put your full proxy_pass and other
relevant configuration.

All the best,

f

Francis D. [email protected]

On 21 Set 2011 21h44 WEST, [email protected] wrote:

root /home/webhost/public_html/;
client_body_buffer_size 128k;
The problem is when a file is uploaded to MediaWIki, i shows a page
like

http://webhostingneeds.com/File:FILENAME.exten

This should work:

location / {

proxy_pass http://174.36.130.243:81/;
proxy_redirect     off;
proxy_set_header   Host             $host;
proxy_set_header   X-Real-IP        $remote_addr;
proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
client_max_body_size       1m;
client_body_buffer_size    128k;
proxy_connect_timeout      90;
proxy_send_timeout         90;
proxy_read_timeout         90;
proxy_buffer_size          4k;
proxy_buffers              4 32k;
proxy_busy_buffers_size    64k;
proxy_temp_file_write_size 64k;

location ^~ /File: {

    location ~* /File:[^/]*\.(?:jpe?g|png|gif|html)$ {
        proxy_pass http://174.36.130.243:81/;
    }
}

}

For example

http://webhostingneeds.com/File:Averttv_device_property.jpg

Since the file extension is .jpg, nginx try to service this as
static content.

How i can set nginx to serve static files, pass anything starting
with /File: to apache ?

— appa