nginx webmcr rewrite rules

server {
listen 80;
server_name ordinary-minecraft.ru www.ordinary-minecraft.ru;

root /srv/webmcr/;
index index.php index.html;
location /news {
rewrite ^/news/([^/]+)/?$ /index.php?id=$1 last;
}
location /category {
rewrite ^/category/([^/]+)/?$ /index.php?cid=$1 last;
}
location /list {
rewrite ^/list/([^/]+)/?$ /index.php?l=$1 last;
}
location /control {
rewrite ^/control/([^/]+)/?$ /index.php?mode=control&do=$1 last;
}
location /get {
rewrite ^/get/([^/]+)/?$ /action.php?method=download&file=$1 last;
}
location /go {
rewrite ^/go/([^/]+)/?$ /index.php?mode=$1 last;
}
location = /authenticate {
rewrite ^(.*)$ /MineCraft/auth16x.php last;
}
location = /invalidate {
rewrite ^(.*)$ /MineCraft/invalidate16x.php last;
}
location = /refresh {
rewrite ^(.*)$ /MineCraft/refresh16x.php last;
}
location /game {
rewrite ^/game/joinserver.jsp /MineCraft/joinserver.php last;
}
location / {
try_files $uri $uri/index.php?$uri&$args;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

nginx-frontend + nginx-backend и потерявшиеся реальные IP посетителей.

Мы говорим о связке nginx+nginx. Те, кто впервые настраивает такую связку наверняка столкнулись с тем, что nginx-backend пишет в лог (и отдает в PHP/Django и прочее, соответственно) IP фронт-энда. Если в апаче это решалось при помощи mod_rpaf, то в nginx’e всё намного проще.

В секцию http {} или в секцию нужного server {} (если вы упрямы — то можете даже в location {} вписать) пишем следующие строки:
set_real_ip_from 8.8.8.8;
real_ip_header X-Real-IP;

Либо:
set_real_ip_from 192.168.0.0/24;
real_ip_header X-Real-IP;

В директиве set_real_ip_from мы указываем серверы, которым мы доверяем тяжкую ношу по передаче нам IP адресов посетителей (если тут указать чужие серверы — то эти самые чужие серверы смогут вас очень красиво и весело dos-ить с адресов вида 0.0.0.1, например).

Директивой real_ip_header мы указываем откуда брать IP. В данном примере нужно на фронте написать proxy_set_header X-Real-IP $remote_addr; в proxy_pass.

оригинал

nginx как reverse proxy

Конфигурация nginx без ssl

server {
    listen 80;
    server_name mydomain.com;

    location / {
	proxy_pass http://127.0.0.1:8080/;
	proxy_set_header   X-Real-IP $remote_addr;
	proxy_set_header   Host $host;
	proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }																							    
}

Конфигурация nginx с ssl

server {
 listen 80;
 server_name mydomain.com;
 return 301 https://$server_name$request_uri; # enforce https
}

server {
        listen            443;
        server_name       mydomain.com;

        access_log       /var/log/nginx/ssl-access.log;

        ssl                     on;
        ssl_protocols           SSLv3 TLSv1;
        ssl_certificate         /etc/nginx/ssl/cert.pem;
        ssl_certificate_key     /etc/nginx/ssl/cert.key;

        location / {
                proxy_pass            https://127.0.0.1:8080/;
                proxy_redirect        off;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For      $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_pass_header Set-Cookie;
        }
}