平时在自己的服务器上跑了很多服务，而且是用习惯了docker跑，对外开放的端口都是自设，为了统一管理域名+SSL，之前都是用宝塔或者lnmp比较方便，如果愿意折腾用Nginx-docker，就是稍微麻烦点。但是，今天发现这款nginx-proxy-manager的开源项目，非常方便，又很轻量。项目地址：https://github.com/jc21/nginx-proxy-manager官网：https://nginxproxymanager.com/[scode type="yellow"]特点介绍[/scode]非常适合小白有一个漂亮的UI界面一分钟可以搞定反向代理+SSL证书申请配置Docker-compose 一键部署很容易配置端口转发、404主页、重定向等功能支持多用户管理方便管理域名白名单、更好保护自己的小鸡支持Nginx的深度修改（适合有一定基础的MJJ）安装安装Docker以及docker-composewget -qO- https://get.docker.com/ | sh curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version编辑docker-compse.yml文件vi docker-compose.yml修改一下自己的volumes路径version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt启动docker-composedocker-compose up -d登录系统Default Admin User:Email: admin@example.com Password: changeme使用先去解析一个域名，同时部署好相关服务，我用了一个2048的docker测试。新增一个反向代理，配置好域名，代理的端口，增加ssl，就可以啦。实在是太方便了。此外，还有很多功能，比如强制ssl，自定义路径等等。除了反向代理外，还有其他很多功能。
今天忽然要用一下nginx，但是不需要数据库等其他配件，想起docker应该是挺好用的，尝试了一下。环境准备安装dockertwget -qO- https://get.docker.com/ | sh创建目录创建www目录以及wwwrootmkdir www mkdir wwwroot mkdir conf创建容器docker run -d --name nginx nginx这一步主要是获取conf文件，查看 ==> 获取容器IDdocker container ls拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录docker cp a89b2c5f3dd1:/etc/nginx/nginx.conf $PWD/conf删除容器：docker stop a89b2c5f3dd1 docker rm a89b2c5f3dd1开始正式部署部署命令：docker run -d -p 8080:80 --name nginx-web -v $PWD/wwwroot:/usr/share/nginx/html -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/var/log/nginx nginx转：https://segmentfault.com/a/1190000015758373
引言最近在这里看到一个关于LNMP的Nginx的反向代理教程，觉得挺不错，转载过来：https://www.moerats.com/archives/445/正文防止链接失效，把内容也贴过来：反代的方法有很多，之所以选择lnmp的原因是方便，因为利用Nginx反代网站需要–with-http_sub_module拓展，而军哥的lnmp已经自动添加了，1.4版本的lnmp也可以自动签发SSL证书，不需要我们额外来申请，所以挺方便的，基本只要直接编辑配置文件即可！这里说下方法。方法本方法主要以反代Google为主，想反代其它网站的可以照葫芦画瓢，或者参考：利用Nginx反向代理来简单镜像HTTP(S)网站的方法，照搬配置文件就可以了。首先得添加域名及自动签发SSL证书。然后编辑域名配置文件/usr/local/nginx/conf/vhost/your.com.conf。server { listen 443; server_name 你的域名; #为了安全考虑（例如IP被墙），强烈建议使用HTTPS ssl on; ssl_protocols TLSv1.2; ssl_certificate ~/站点证书 ssl_certificate_key ~/站点证书密钥 location / { proxy_pass https://www.google.com; #把返回的302重定向的域名替换成你的。这里关闭 proxy_redirect off; #替换指定字符串 sub_filter www.google.com 你的域名; #字符串只进行一次替换，即只替换第一个被匹配的字符串。这里关闭。 sub_filter_once off; #指定头部： proxy_set_header Host "www.google.com"; proxy_set_header Referer $http_referer; proxy_set_header X-Real-IP $remote_addr; proxy_set_header User-Agent $http_user_agent; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; #防止谷歌返回压缩的内容，因为压缩的内容无法替换字符串 proxy_set_header Accept-Encoding ""; proxy_set_header Accept-Language "zh-CN"; #把cookie的作用域替换成你的域名 proxy_cookie_domain www.google.com 你的域名; #传固定的cookie给谷歌，是为了禁止即时搜索，因为开启即时搜索无法替换内容 proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=en-US:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw"; #启用proxy_cache缓存 proxy_cache proxycache; proxy_cache_valid 304 2h; proxy_cache_valid 403 444 2h; proxy_cache_valid 404 2h; proxy_cache_valid 500 502 2h; proxy_cache_use_stale invalid_header http_404 http_500 http_502; proxy_cache_lock on; proxy_cache_lock_timeout 5s; } } 这里启用了proxy_cache这个缓存。一般lnmp已经编译了proxy_cache，需要我们编辑下nginx.conf文件才能使用。 #在http里面添加如下代码即可 http { proxy_cache_path /home/cache levels=1:2 keys_zone=proxycache:60m max_size=120m inactive=2h use_temp_path=on; proxy_temp_path /home/temp; proxy_cache_key $host$uri; } [/php] 注意：记得将配置文件里的www.google.com替换成你VPS所在国家的Google官网，不然可能会反代不成功，只出现域名跳转的情况。 之前是监控的443端口，然后再做域名的301跳转，将80端口的http跳转到https，编辑conf配置文件增加以下代码。 [php]server { listen 80; server_name moerats.com; return 301 https://www.moerats.com$request_uri; } 最后重启Nginx即可。lnmp nginx restart 2018.12.15 补充 如果出现丢失css的情况，注意lnmp下添加：location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { proxy_pass https://localhost:7443; } location ~ .*\.(js|css)$ { proxy_pass https://localhost:7443; } 2019.2.2补充 由于80端口被占用，frp穿透了6443端口到家里，在用nginx反代端口，https下出现问题，是由于反向代理的配置有问题，在网上发现了这么一个解决： location / { proxy_pass https://path.cmdgy.com:8444; #frp代理地址和端口，需与frp配置文件中域名相同 proxy_ssl_server_name on; proxy_ssl_session_reuse off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Fprwarded-Proto $scheme; proxy_ssl_verify off; proxy_redirect http:// $scheme://; proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2; }