Проксирование обращений к BGBillingServer посредством nginx
Материал из BiTel WiKi
При классической схеме сервер биллинга располагается во внутренней сети организации, nginx позволяет организовать доступ извне к серверу Web-статистики и серверам платежных систем.
Первый пример
Не очень хорош, тем что остается открытым наружу сервис executer, предназначеный для обращений клиента биллинга. Зато прост :)
Вот сделал прокси на ngingx. Отлично все летает. SSL слушает и на SSL проксирует. Могет пригодиться...
#user nobody; worker_processes 1; error_log logs/error.log debug; pid logs/nginx.pid; events { worker_connections 1024; } http { include conf/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; server { listen 443; # что слушать keepalive_timeout 70; ssl on; ssl_certificate /usr/local/nginx/conf/host.ru.pam; ssl_certificate_key /usr/local/nginx/conf/host.ru.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; access_log logs/host.access.log main; # Main location location / { proxy_pass https://192.168.12.1:8443/; # куда проксировать proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
Второй пример пример
Сервер биллинга расположен на внутреннем сервере 1.2.3.4. Клиент заходит на страницу https://bill.provider.ru либо https://gw.provider.ru и его запросы пробрасываются на http порт внутреннего сервера.
Обратите внимание на закрытые сервисы executer, mpsexecuter. Их можно открыть для доверенных адресов (сотрудников с правом входа извне, серверов платежных систем).
user nginx; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; keepalive_timeout 65; gzip on; # HTTP/HTTPS Proxy for BGBilling # server { listen 443; server_name bill.provider.ru gw.provider.ru; ssl on; ssl_certificate /etc/ssl/certs/gw.pem; ssl_certificate_key /etc/ssl/certs/gw.pem; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; charset windows-1251; client_max_body_size 10m; proxy_set_header Host $host; proxy_set_header Connection close; proxy_set_header X-Real-IP $remote_addr; proxy_read_timeout 60; gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; location ~ /\.ht { deny all; } location /bgbilling/executer { deny all; } location ~ ^.*/bgbilling/mpsexecuter { deny all; } location /bgbilling { proxy_pass https://1.2.3.4:9080/bgbilling; proxy_redirect http://bill.provider.ru/bgbilling https://bill.provider.ru/bgbilling; proxy_redirect http://1.2.3.4:9080/bgbilling https://bill.provider.ru/bgbilling; } location / { root /usr/local/www/html; index index.html; } } server { listen 80 default; server_name bill.provider.ru gw.provider.ru; location / { rewrite ^/(.*)$ https://bill.provider.ru/$1 permanent; allow all; } } }