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

Исходное сообщение
"Nginx - Apache, как сделать из связки прокси?"

Отправлено Magi , 09-Мрт-13 02:04 
Здравствуйте!
Подскажите пожалуйста, когда стоял просто apache 2.2 и в конфиге были такие строки

ProxyRequests On
ProxyVia Block
AllowCONNECT 21 25 110 443 22 554 563 5190 1080 8080 5140 5160 4000 1478 1479 1480 8008 1480>

<Proxy *>
  Order deny,allow
  deny from all
  allow from xxx.xx.xx.xx
</Proxy>

Апач работал, как прокси. Но возникла необходимость поставить nginx.
Теперь прокси перестал работать.
Как можно вернуть этот функционал?
Ниже конфиг nginx

# user nginx;
worker_processes  4;
# error_log  /dev/null;
error_log  /usr/local/nginx/logs/error.log  notice;
#pid        logs/nginx.pid;
worker_rlimit_nofile 500000;
worker_priority -5;
events { worker_connections  200000; multi_accept on; }
http { include       mime.types; default_type  application/octet-stream;
types { text/plain    data;  }
    log_format  main  '$remote_addr - $remote_user [$time_local] $host $request
'
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_src_client_ip"';

access_log /usr/local/nginx/logs/access.log  main;
# access_log off;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    on;
    gzip           on;
    keepalive_timeout  0;
    server_tokens off;
    server_names_hash_bucket_size 64;
    proxy_buffers     100 64k;
    proxy_read_timeout 300;
    proxy_send_timeout 300;
    client_max_body_size 1500m;
    reset_timedout_connection on;

proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=one:16m inactive=7d max_size=10>
proxy_temp_path /var/cache/nginx/temp;

server {
      listen       *:80;
      server_name   *.com;
location /nginx_status { stub_status on; access_log off; allow 195.34.232.172; deny all; }
location /munin { alias   /var/www/html/munin; autoindex on; auth_basic "Munin"; auth_basic_>
      location / {
            proxy_pass        http://195.34.232.172:8181/;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
      }

}

server {
      listen       *:80;
      server_name   www.recipe.ru recipe.ru;
location /nginx_status { stub_status on; access_log off; allow 195.34.232.172; deny all; }
location /munin { alias   /var/www/html/munin; autoindex on; auth_basic "Munin"; auth_basic_>
# proxy_temp_path /var/cache/nginx/recipe.ru;

location / {
            proxy_pass        http://195.34.232.172:8181;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
proxy_cache one;
proxy_cache_key "$request_method|$is_args|$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie" "X-Accel-Expires" "X-Accel-Redir>
# proxy_ignore_headers "Cache-Control" "Expires" "X-Accel-Expires" "X-Accel-Redirect";
proxy_cache_valid  200 302  10m;
proxy_cache_valid  404      1m;
proxy_cache_valid  any 10s;
proxy_cache_use_stale http_502 http_503 http_504;
proxy_cache_bypass $cookie_session $http_x_update;

}

# location /administrator {
location ~*(administrator|comprofiler)* {
         proxy_cache off;
         proxy_pass        http://195.34.232.172:8181;
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Real-IP $remote_addr;

}

}
}


Содержание

Сообщения в этом обсуждении
"Nginx - Apache, как сделать из связки прокси?"
Отправлено erera22 , 11-Мрт-13 14:55 
Из Вашего поста вообще не понятно что и куда Вы хотите проксировать. Простейший случай:

server {
   hostname _;
   listen 80;

   location / {
      proxy_pass       http://195.34.232.172:8181;
      proxy_redirect   off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
   }
}


"Nginx - Apache, как сделать из связки прокси?"
Отправлено Magi , 11-Мрт-13 15:22 
> Из Вашего поста вообще не понятно что и куда Вы хотите проксировать.
> Простейший случай:

В общем нужно чтобы с клиентского компьютера, указав в браузере IP:порт можно было бы выйти в инет через связку apache -> nginx.


"Nginx - Apache, как сделать из связки прокси?"
Отправлено erera22 , 11-Мрт-13 16:15 
>> Из Вашего поста вообще не понятно что и куда Вы хотите проксировать.
>> Простейший случай:
> В общем нужно чтобы с клиентского компьютера, указав в браузере IP:порт можно
> было бы выйти в инет через связку apache -> nginx.

Окай.

server {
   server_name     _;
   listen  <addr>:80;
   resolver   8.8.8.8;

   location / {
      proxy_pass      http://$host:80;
      proxy_redirect  off;
      proxy_set_header   Host $host;
   }
}

Соответственно в браузер пишем addr:80. Получаем прокси из nginx для 80 порта. По необходимости добавляем прочие.


"Nginx - Apache, как сделать из связки прокси?"
Отправлено Magi , 11-Мрт-13 17:06 
>[оверквотинг удален]
>    resolver   8.8.8.8;
>    location / {
>       proxy_pass      
> http://$host:80;
>       proxy_redirect  off;
>       proxy_set_header   Host $host;
>    }
> }
> Соответственно в браузер пишем addr:80. Получаем прокси из nginx для 80 порта.
> По необходимости добавляем прочие.

Добавил модифицированные под меня эти строки в конец файла конфигурации

У меня написал ошибку
nginx: [emerg] "server" directive is not allowed here in /conf/nginx.conf:87

Может быть нужно встроить их куда-то выше?


"Nginx - Apache, как сделать из связки прокси?"
Отправлено erera22 , 11-Мрт-13 18:40 
Ну, вообще-то, это был пример виртуального сервера.

Берем Ваш кусок конфига:
server {
      listen       *:80;
      server_name   *.com;
location /nginx_status { stub_status on; access_log off; allow 195.34.232.172; deny all; }
location /munin { alias   /var/www/html/munin; autoindex on; auth_basic "Munin"; auth_basic_>
      location / {
            proxy_pass        http://195.34.232.172:8181/;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
      }

}

выкидываем отсюда всю по*боту про мониторинг и статус сервера, получаем location

server {
   listen      80;
   server_name _;

   location / {
      # откуда этот адрес, 195.34.232.172:8181? Куда он "смотрит"? Делаем, согласно ТЗ
      # $host - домен, который хочет получить пользователь, 80 - порт,
      # на который будем ломиться.
      # пример: $host == 'ya.ru' , port = 80, тогда: proxy_pass http://ya.ru:80
      proxy_pass http://$host:80

      # далее передаем на удаленный сервер название домена, который мы хотим видеть
      proxy_set_header Host $host;

      # так как нам не надо показывать адреса, которые запрашивают информацию,
      # то указываем, что не надо менять location/refresh и
      # завершаем location
      proxy_redirect off;
   }
}

Думайте прежде, чем ... кхм ... вставляете. Куда бы то ни было.


"Nginx - Apache, как сделать из связки прокси?"
Отправлено Magi , 31-Май-14 03:12 
>[оверквотинг удален]
> название домена, который мы хотим видеть
>       proxy_set_header Host $host;
>       # так как нам не надо
> показывать адреса, которые запрашивают информацию,
>       # то указываем, что не надо
> менять location/refresh и
>       # завершаем location
>       proxy_redirect off;
>    }
> }

Проблема на какое-то время потерял свою актуальность, но сейчас понадобился снова.
Видимо я сразу не уточнил, но суть в том, что на связке apache->nginx работает сайт. Ранее на голом апаче с помощью настроек выше можно было использовать адрес сайта и 80 порт в качестве прокси, указав его в настройках браузера. Для повышения производительности был добавлен nginx, но функционал прокси отвалился. Сейчас нужно его вернуть. На сервере открыт только 80 порт, других не будет. Подскажите, как вернуть функционал прокси? Пробовал вышеописанное - не получилось...