提到Nginx很多运维人员又是喜欢又是愁。喜欢是因为功能强大,性能强,愁的是配置管理确实复杂了点。很多新手第一次接触Nginx都会被其各种复杂的配置项搞得头疼,什么 location、什么 upstream,傻傻分不清楚。比如一个简单的单层反向代理 /api 配置:
提到Nginx很多运维人员又是喜欢又是愁。喜欢是因为功能强大,性能强,愁的是配置管理确实复杂了点。很多新手第一次接触Nginx都会被其各种复杂的配置项搞得头疼,什么 location、什么 upstream,傻傻分不清楚。比如一个简单的单层反向代理 /api 配置:
http {
server {
listen 80;
location /api {
proxy_pass http://backend_server:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
}
}
}
上述代码只是单层反向代理,如果涉及多台反向代理,配置更为复杂,如下:
server {
listen 80;
server_name proxy1.example.com;
location / {
proxy_pass http://proxy2.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name proxy2.example.com;
location / {
proxy_pass http://final-destination.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name final-destination.example.com;
location / {
}
}
在上面的多层反向代理配置中,请求到第一层代理proxy1.example.com,然后由proxy1转发请求到第二层代理proxy2.example.com,最后由proxy2转发请求到最终服务器final-destination.example.com。每层代理都必须正确地设置X-Real-IP和X-Forwarded-For,如果出现任何的配置错误,那么就会导致Nginx运行失败。
那么有没有什么办法快速学习会Nginx,同时降低Nginx配置的复杂度呢,答案是有的。第一种:脑袋聪明,一学就会的Nginx大神,那么什么复杂问题都不是问题了。很显然,小编不是这种脑袋聪明的,但是小编会“偷懒”。所以,选择了第二种,Nginx可视化管理界面:nginx-proxy-manager
一句话介绍nginx-proxy-manager:为用户提供简单而强大的Nginx Proxy可视化管理界面,降低学习和配置门槛。
功能特性
nginx-proxy-manager 安装
#具备docker和docker-compose环境
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
部署完成后,通过浏览器访问:http://hostip:81 打开nginx-proxy-manager界面,账号密码:
Email: admin@example.com
Password: changeme