2009/6/18 Igor Sysoev <span dir="ltr">&lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt;</span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="h5">On Thu, Jun 18, 2009 at 08:10:27AM -0700, Kevin Castiglione wrote:<br>
<br>
&gt; 2009/6/18 Igor Sysoev &lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt;<br>
&gt;<br>
&gt; &gt; On Thu, Jun 18, 2009 at 07:44:55AM -0700, Kevin Castiglione wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; 2009/6/18 Igor Sysoev &lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Thu, Jun 18, 2009 at 07:21:33AM -0700, Kevin Castiglione wrote:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; 2009/6/18 Igor Sysoev &lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; On Thu, Jun 18, 2009 at 06:38:54AM -0700, Kevin Castiglione wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 2009/6/18 Igor Sysoev &lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; On Wed, Jun 17, 2009 at 09:22:46PM -0700, Kevin Castiglione<br>
&gt; &gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; hei guys<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; i want all urls to be re-written as follows:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; xx /host/xx<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; xx is the url full path, it should be written as /domain/xx<br>
&gt; &gt; where<br>
&gt; &gt; &gt; &gt; &gt; &gt; host is<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; the hostname.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; for example <a href="http://www.ABCD.COM" target="_blank">www.ABCD.COM</a> &lt;<a href="http://www.abcd.com/" target="_blank">http://www.abcd.com/</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; /test?1 ---&gt; /<a href="http://ABCD.COM/test?1" target="_blank">ABCD.COM/test?1</a> &lt;<a href="http://abcd.com/test?1" target="_blank">http://abcd.com/test?1</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; is it possible to do this with nginx?<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; thank you!<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Should it be redirect or what ?<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; i dont want it to be a permanent redirect. i just want the url to<br>
&gt; &gt; be<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; rewritten for application processing. i want different domains to<br>
&gt; &gt; be<br>
&gt; &gt; &gt; &gt; &gt; &gt; handled<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; by same web app an dmy webframe work supports only url-level<br>
&gt; &gt; &gt; &gt; application<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; mapping. that is why i need this rewrite.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; thank you<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; If you use proxing, then<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; server {<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;   location / {<br>
&gt; &gt; &gt; &gt; &gt; &gt;       proxy_pass  <a href="http://backend/$host$request_uri" target="_blank">http://backend/$host$request_uri</a>;<br>
&gt; &gt; &gt; &gt; &gt; &gt;    }<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; }<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; im using fastcgi backend.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Then<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;   location / {<br>
&gt; &gt; &gt; &gt;       ...<br>
&gt; &gt; &gt; &gt;       fastcgi_param  SCRIPT_FILENAME<br>
&gt; &gt; &gt; &gt;                      /path/to/scripts/$host$fastcgi_script_name;<br>
&gt; &gt; &gt; &gt;       ...<br>
&gt; &gt; &gt; &gt;    }<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; igor:<br>
&gt; &gt; &gt; does this mean the backend fastcgi processes have to be in the same<br>
&gt; &gt; machine?<br>
&gt; &gt; &gt; i have my backends running on different machine like this<br>
&gt; &gt;<br>
&gt; &gt; No, this path<br>
&gt; &gt;        /path/to/scripts/$host$fastcgi_script_name;<br>
&gt; &gt; may be on any host.<br>
&gt; &gt;<br>
&gt; &gt; In your case you need probably this:<br>
&gt; &gt;<br>
&gt; &gt;      fastcgi_param SCRIPT_FILENAME /$host$fastcgi_script_name;<br>
&gt;<br>
&gt; so with this i dont need to write any rewrite rule?<br>
<br>
</div></div>Yes.<br>
<div class="im"></div></blockquote><div>igor,<br>i changed this and tried. it does not have any affect on the url mapping. my fastcgi backend still gets the same url as before.<br>this is what i see, with the change you had given.<br>
<a href="http://xx.com/yy">xx.com/yy</a> ---&gt; <a href="http://xx.com/yy">xx.com/yy</a><br><br>while this is what i want on the webapp/fastcgi backend<br><a href="http://xx.com/yy">xx.com/yy</a> --&gt; <a href="http://xx.com/xx.com/yy">xx.com/xx.com/yy</a><br>
im pasting my full config here:<br><br>#user  nobody;<br>worker_processes  1;<br><br>error_log  /home/app/error_all.log;<br>pid        /home/app/nginx.pid;<br><br>events {<br>    worker_connections  1024;<br>}<br><br>http {<br>
    include       mime.types;<br>    default_type  application/octet-stream;<br>    client_header_buffer_size   8k;<br>    large_client_header_buffers  4  8k;<br>    fastcgi_buffers      32 4k;<br>    fastcgi_buffer_size  4k;<br>
    sendfile        on;<br><br>    server_names_hash_bucket_size 64;<br>    keepalive_timeout  5;<br><br>    gzip  on;<br>    gzip_comp_level  1;<br>    gzip_proxied     private;<br>    gzip_buffers     8 4k;<br><br><br>    upstream backend_flock{<br>
        server <a href="http://app1.XXX.com:8492">app1.XXX.com:8492</a> fail_timeout=1s;<br>    }<br>    server {<br>        listen 8080;<br>        access_log   /home/app/access_flock.log;<br><br>        client_max_body_size 10m;<br>
<br>        location /static {<br>            root   /home/app/work/flock;<br>        }<br>        location / {<br>            root   /home/app/work/flock;<br><br>            fastcgi_pass backend_flock;<br><br>            fastcgi_param SCRIPT_FILENAME /$host$fastcgi_script_name;<br>
            fastcgi_param PATH_INFO       $fastcgi_script_name;<br>            fastcgi_param QUERY_STRING    $query_string;<br>            fastcgi_param CONTENT_TYPE    $content_type;<br>            fastcgi_param CONTENT_LENGTH  $content_length;<br>
            fastcgi_param REQUEST_METHOD  $request_method;<br>            fastcgi_param REMOTE_ADDR     $remote_addr;<br>            fastcgi_param REMOTE_PORT     $remote_port;<br>            fastcgi_param SERVER_PROTOCOL $server_protocol;<br>
            fastcgi_param SERVER_ADDR     $server_addr;<br>            fastcgi_param SERVER_PORT     $server_port;<br>            fastcgi_param SERVER_NAME     $server_name;<br><br>        }<br><br>    }<br>}<br><br><br><br>
</div><div> </div><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im"><br>
&gt; &gt; Also, this<br>
&gt; &gt;<br>
&gt; &gt;       if ($http_x_forwarded_for ~ &quot;(?:^|,)\s*(\d+\.\d+\.\d+\.\d+)\s*$&quot;) {<br>
&gt; &gt;           set  $addr  $1;<br>
&gt; &gt;       }<br>
&gt; &gt;<br>
&gt; &gt;        fastcgi_param REMOTE_ADDR     $addr;<br>
&gt; &gt;<br>
&gt; &gt; means that anyone may forge his address.<br>
&gt;<br>
&gt; without this my web app gets client ip address as the ip address of the<br>
&gt; machine running nginx and not the actual client.<br>
<br>
</div>     fastcgi_param REMOTE_ADDR     $remote_addr;<br>
<br>
sets address of nginx&#39;s client.<br>
<div></div></blockquote><div>this works great!!  <br></div></div>thanks a lot!<br>