URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 95339
[ Назад ]

Исходное сообщение
"Nginx rewrite "

Отправлено Нубби , 10-Янв-14 13:55 
Нужно чтобы при обращении к http://внеш_ip:8081/чегототам/123 был произведено обращение к http://внутр_ip:8081/чегототам/123 и произведена перезапись соответствующих заголовков.

Сейчас при обращении http://внеш_ip:8081/чегототам/123 происходит вывод в браузере
http://внутр_ip:8081/чегототам/123

Конфигу nginx почти не трогал:
cat /etc/nginx/nginx.conf
user nginx nginx;
worker_processes 1;

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;

        gzip on;
        gzip_min_length 1100;
        gzip_buffers 4 8k;
        gzip_types text/plain;

        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;

server {
        listen внеш_ip:8081;
        server_name внеш_ip;
        location = /    {
                rewrite ^ http://внутр_ip:8081/;
                proxy_pass         http://внутр_ip:8081/;
                proxy_redirect     off;
                        }
        access_log /var/log/nginx/localhost.access_log main;
                error_log /var/log/nginx/localhost.error_log info;

#               root /var/www/localhost/htdocs;
   }
      
}


Содержание

Сообщения в этом обсуждении
"Nginx rewrite "
Отправлено PavelR , 11-Янв-14 08:57 
>         location = /  

Читайте документацию по location.

>            
>     rewrite ^ http://внутр_ip:8081/;

Эта директива - полный бред.
Читайте документацию по rewrite.


"Nginx rewrite "
Отправлено Mila , 12-Янв-14 02:20 
Вижу в вашем конфиге полнейшее непонимание что вы делаете. Ну ничего.
Зачем вам директива proxy_pass непонятно. И зачем такое перенаправление вообще??? Ваш внутренний адрес из "мира" вы не увидите.
Вобщем, если вам нужно просто перенаправлять запросы на другой адрес, то лучше 2 серверных блока. Типа этого

server {
listen EXTERNAL_IP:80;
server_name www.blabla.com;
return 301 $scheme://INERNAL_IP$request_uri;
}

server {
        listen INTERNAL_IP:80;

     .....
}


"Nginx rewrite "
Отправлено PavelR , 12-Янв-14 19:10 
>[оверквотинг удален]
> лучше 2 серверных блока. Типа этого
> server {
> listen EXTERNAL_IP:80;
> server_name www.blabla.com;
> return 301 $scheme://INERNAL_IP$request_uri;
> }
> server {
>         listen INTERNAL_IP:80;
>      .....
> }

не-не не. Это не правильный скелет конфига.

Топикстартеру нужно просто правильно настроить проксирование (proxy_pass).
Для этого нужно постепенно разобраться с директивой location {}, убрать весь crap, и усложнять конфиг постепенно по мере роста потребностей, а не лепить непонятные равно и rewrite.