

![]() | Start a set with this search |
![]() | Include this search in one of my sets |
![]() | Exclude this search from one of my sets |
![]() | Permalink to these results Paste this link in email or IM: |
| Atom feed for tracking future search results Paste this URL into your reader: |
3 messages in ru.sysoev.nginxRe: ngnix+proxy+mongrel => real host| From | Sent On | Attachments |
|---|---|---|
| Julien Biard | Apr 27, 2007 1:02 am | |
| Igor Sysoev | Apr 27, 2007 1:14 am | |
| Julien Biard | Apr 27, 2007 2:18 am |

![]() | Permalink for this message Paste this link in email or IM: |
![]() | Permalink for this thread Paste this link in email or IM: |
| Atom feed for this thread Paste this URL into your reader: |
| Subject: | Re: ngnix+proxy+mongrel => real host | Actions... |
|---|---|---|
| From: | Igor Sysoev (is-G...@public.gmane.org) | |
| Date: | Apr 27, 2007 1:14:55 am | |
| List: | ru.sysoev.nginx | |
On Fri, Apr 27, 2007 at 10:02:43AM +0200, Julien Biard wrote:
Hi,
I want to use ngnix + mongrel in proxy with different URLs, e.g site1.com, site2.fr... and I need to get the real host in my application (with request.host) and not the host used in upstream declaration. Any idea ?
In this case, I have mongrel as host instead of site1.com or site2.fr :/
Set these
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
at http level, so they will be inherited (if not overriden by any proxy_set_header) to all servers and locations.
Then all request to the mongrel upstream will have a client "Host".
%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%< /etc/nginx/ngnix.conf
user nginx nginx; worker_processes 2;
error_log /var/log/nginx/error_log info;
events { worker_connections 1024; use epoll; }
http { include /etc/nginx/mime.types; default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$gzip_ratio"';
client_header_timeout 10m; client_body_timeout 10m; send_timeout 10m;
connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 4 2k; request_pool_size 4k;
output_buffers 1 32k; postpone_output 1460;
sendfile on; tcp_nopush on; tcp_nodelay on;
keepalive_timeout 75 20;
ignore_invalid_headers on;
index index.html;
gzip on; gzip_min_length 1100; gzip_buffers 4 8k; gzip_types text/plain;
client_max_body_size 11000k;
upstream mongrel { server 127.0.0.1:8000; server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; }
# ruby/mongrel server { listen 80; server_name site1.com;
error_log /var/log/nginx/site1.com_error.log; include /etc/nginx/include; }
server { listen 80; server_name site2.fr; error_log /var/log/nginx/site2.fr_error.log; include /etc/nginx/include;
}
}
%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%< /etc/nginx/include :
listen 80;
root /home/www/app/current/public;
access_log off; rewrite_log on;
# / -> first search for local index.html then go to mongrel location ~ ^/$ { if (-f /index.html){ rewrite (.*) /index.html last; } proxy_pass http://mongrel; }
# rail caching: searching first for $action.html local pages location / { if (!-f $request_filename.html) { proxy_pass http://mongrel; } rewrite (.*) $1.html last; }
# serve static files directly location ~ .html { root /home/www/app/current/public; }
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ { root /home/www/app/current/public; }
# resend everything else to mongrel location / { proxy_pass http://mongrel; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<
-- Igor Sysoev http://sysoev.ru/en/







