Getting the URLs right when proxying to apache and mongrel
Igor Sysoev
is at rambler-co.ru
Sun Sep 2 19:34:01 MSD 2007
On Sun, Sep 02, 2007 at 03:32:25PM +0100, marc wrote:
> Hi,
>
> I'm testing nginx by putting it in front of an existing Apache server,
> and also using it to serve rails via mongrel.
>
> This works okay, mostly, but for a couple of things:
>
> 1. When I proxy to Apache (on port 81) the URLs are written showing the
> port, e.g.
>
> http://mote:81/Main/Software
>
> I'd like not not to see the port number, if possible,
>
> I tried using
>
> upstream apache {
> server mote:81;
> }
>
> and
>
> location / {
> proxy_pass http://apache;
proxy_redirect http://mote:81/ /;
> }
>
> but that resulted in URLs of the form: http://apache/...
>
> 2. The url required to access the rails app fails without the trailing
> slash. So,
>
> http://mote/rails/
>
> works, but the following doesn't
>
> http://mote/rails
In your configuration, proxied request is "GET HTTP/1.0".
What request should go to mongrel for /rails ?
> I'd like the latter to work, if possible,
>
> I've added my conf file below for reference.
> user www-data;
> worker_processes 1;
>
> error_log /var/log/nginx/error.log;
> pid /var/run/nginx.pid;
>
> events {
> worker_connections 1024;
> }
>
> http {
> include /etc/nginx/mime.types;
> default_type application/octet-stream;
> access_log /var/log/nginx/access.log;
> sendfile on;
> keepalive_timeout 65;
> tcp_nodelay on;
> gzip on;
> gzip_min_length 1100;
> gzip_buffers 4 8k;
> gzip_types text/plain;
>
> upstream mongrel {
> server 127.0.0.1:8000;
> server 127.0.0.1:8001;
> }
>
> server {
> listen 80;
> server_name mote;
>
> access_log /var/log/nginx/localhost.access.log;
> root /var/www;
> index index.html index.htm;
>
> location / {
> proxy_pass http://mote:81;
proxy_redirect http://mote:8000/ /;
proxy_redirect http://mote:8001/ /;
> }
>
> location ^~ /rails {
>
> 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_redirect false;
>
> if (!-f $request_filename) {
> root /home/marc/rails/mrctest/public;
> rewrite ^/rails(.*) $1;
> proxy_pass http://mongrel;
> break;
> }
> }
>
> error_page 500 502 503 504 /50x.html;
> location = /50x.html {
> root /var/www/nginx-default;
> }
> }
> }
--
Igor Sysoev
http://sysoev.ru/en/
More information about the nginx
mailing list