Nginx自签名https和反向代理
场景
公司的wiki服务器和docker private registry都在公司的桌面云里,由于公网IP资源紧张,无法为这些服务器每个都配上公网IP, 只能通过一个公网IP来访问,所以需要用Nginx做个反向代理来访问些服务器。另外,这些服务都要以https来访问。
服务器 | 内网IP |
---|---|
wiki.renhl.com | 172.168.100.47 |
hub.renhl.com | 172.168.100.48 |
生成自签名的证书
因为是自己公司用也就无需申请认证的证书了,自签名即可。
$ sudo mkdir -p /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
配置反向代理
编辑/etc/nginx/sites-available/default
,加入如下内容:
upstream wiki {
server 172.168.100.47:80; # wiki.renhl.com
}
upstream hub {
server 172.168.100.48; # hub.renhl.com
}
## Start wiki.renhl.com ##
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
server_name wiki.ecloud.com.cn;
access_log /var/log/nginx/wiki.renhl.access.log;
error_log /var/log/nginx/wiki.renhl.error.log;
root /usr/share/nginx/html;
index index.html index.htm;
## send request back to apache1 ##
location / {
proxy_pass http://wiki;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering 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;
}
}
## End wiki.renhl.com ##
## START hub.renhl.com ##
server {
server_name hub.renhl.com;
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
access_log /var/log/nginx/hub.renhl.access.log;
error_log /var/log/nginx/hub.renhl.error.log;
root /usr/local/nginx/html;
index index.html;
location / {
proxy_pass https://hub;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering 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;
}
}
## END hub.renhl.com ##
IP限制
出于安全的考虑,要禁止公司以外的人访问这些服务,在nginx里设置只允许公司的IP访问。在上面的两个配置里加入下面的内容:
allow 111.206.238.12;
allow 111.206.238.94;
deny all;
參考文献
- https://www.digitalocean.com/community/tutorials/how-to-create-an-ssl-certificate-on-nginx-for-ubuntu-14-04
- http://www.cyberciti.biz/tips/using-nginx-as-reverse-proxy.html
更多Nginx相关教程见以下内容:
Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里
相关推荐
ssihc0 2020-11-11
某些公司会墙特定网站,如果你有一个可访问的域名和服务器,就可以通过nginx反向代理来来解决这些问题。比如现在我们用mirror.example.com镜像www.baidu.com,以下是详细操作。
byourb 2020-06-05
scaleqiao 2020-10-22
tinydu 2020-08-03
ysmh00 2020-07-04
SZStudy 2020-07-04
TiDBPingCAP 2020-06-28
sicceer 2020-06-21
ssihc0 2020-06-14
WasteLand 2020-06-13
咏月东南 2020-06-10
阳光岛主 2020-06-01
hyxinyu 2020-04-27
yungame 2020-04-25
咻咻ing 2020-04-19
OwenJi 2020-04-18