使用nginx反向代理openvpn
openvpn是单进程的,使用人数多的时候网络就会比较拥挤。如今服务器上开了3个openvpn进程,监听3个端口。客户端配置文件也填写了3个端口,但一般只会连到第一个配置,所以尝试通过nginx反向代理功能实现openvpn负载均衡。
PS:OpenVPN的搭建另寻他文
安装nginx
nginx需要编译安装,编译参数为:
./configure \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-stream \ --with-stream_ssl_module \ --with-stream_realip_module \ --with-stream_geoip_module=dynamic \ --with-stream_ssl_preread_module \ --with-compat \ --with-pcre-jit \ --prefix=/usr/local/nginx
其中--with-stream
参数一定要加。
之后make && make install
安装即可。
编辑nginx配置文件
- openvpn服务器IP假设为:192.168.10.11,开放的端口为1194、11995、1196
- nginx服务器IP假设为:192.168.10.10,监听11940(也可以将nginx和openvpn同一台服务器)
主要配置如下:
stream { upstream openvpn { #least_conn; server 192.168.10.11:1194; server 192.168.10.11:1195; server 192.168.10.11:1196; } server { listen 11940; proxy_pass openvpn; } }
- stream域不能放在http域内
- 全局域、event域的参数可根据实际情况自行调整,默认也行,这里做了一点调整:
worker_processes auto; worker_cpu_affinity auto; worker_rlimit_nofile 65530; events { use epoll; worker_connections 65530; accept_mutex on; accept_mutex_delay 300ms; multi_accept on; worker_aio_requests 128; }
在路由器上做端口转发
每家路由器的配置都不一样,可自行找一找
之前配置了3个openvpn进程,在路由器上就开了3个端口,还是挺浪费的,现在只需要开放1个端口。
编辑客户端的配置文件
客户端的配置文件配上11940端口即可。