делаем машину с сервисом nginx, с белым IP; nginx в режиме прокси. В nginx конфиге прописываем где какой сайт лежит, привожу пример своего конфига:
root@ppserver:/etc/nginx# cat nginx.conf
user www-data;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
proxy_cache_path /var/lib/nginx/proxy levels=1:2 keys_zone=proxy_cache:64m max_size=128m inactive=3d;
reset_timedout_connection on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 5;
keepalive_timeout 30 15;
limit_conn_zone $binary_remote_addr zone=perip:5m;
limit_conn perip 50;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
types_hash_max_size 2048;
server_names_hash_bucket_size 64;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
gzip on;
gzip_proxied expired no-cache no-store private auth;
gzip_buffers 16 8k;
gzip_comp_level 5;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_vary on;
server_tokens off;
output_buffers 1 32k;
postpone_output 1460;
ignore_invalid_headers on;
client_max_body_size 64m;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
root@ppserver:/etc/nginx/sites-enabled# cat default
server {
listen *:80; ## listen for ipv4; this line is default and implied
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name blabla.ru;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
proxy_buffering on;
limit_conn perip 32;
location / {
proxy_pass http://192.168.20.5/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
location /pve {
proxy_pass https://192.168.20.100:8006/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
location /cam32 {
proxy_pass http://10.1.1.239/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 180;
}
}
два файла -
1. конфиг nginx.conf
2. конфиг default, расположенный /etc/nginx/sites-enabled
в конфиге (2) прописаны несколько различных серверов подсети, которые по различным ссылкам показывает nginx. Работает только по https, так как мне нужен защищенный траффик. Можно модифицировать для http, убрав строчку "return 301
https://$host$request_uri;" и назначив порт не 443, а 80. Так же надо удалить все, что связано с ssl из конфига.
Не трогаем две машины с внутренними IP.