nginx代理ssh

项目上有个需求,就是用nginx反向代理ssh,这里使用的是nginx的proxy_pass。

先介绍下proxy_pass,有两个模块,一个是http_proxy,一个是stream_proxy,两个的使用方法一样,只是位置不一样,这里使用的是stream_proxy。

网上的一堆资料都只是写了proxy_pass,但是按照他们的写法,你的nginx就会报错。nginx反代ssh用的是stream_proxy,需要写在stream块里。

仔细看一下你的nginx配置文件,stream块里有专门的地方用来写配置文件。

nginx lua waf部署

刚处理完服务器安全问题。

到新公司来接手一堆烂服务器,第一次看到用宝塔管理业务服务器的,无奈。

首先说说nginx lua waf的部署环境,centos 6,nginx 1.12.1,跑的php。lnmp编译安装。

服务器上还部了个安全狗,这是个什么鬼?

开干吧,nginx -V,查看nginx编译参数,这些参数要记下来,后面有用。

#nginx -V
nginx version: nginx/1.12.2
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
safedog ......
configure arguments: --prefix=/opt/programs/nginx_1.12.2 --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-threads --with-http_v2_module --with-http_addition_module --with-http_dav_module --with-file-aio --with-http_gunzip_module --add-module=nginx_upstream_check_module-master

去nginx.org下载对应版本的源码回来,因为需要增加lua模块。

阅读更多

nginx提示host not found in upstream错误

今天重启nginx,发现nginx报错,看了一下systemd的错误提示,journalctl -xe,原来报错了:

host not found in upstream

看了下配置文件,原来是proxy_pass后面跟的是域名,但以前的时候都没有出现过这个问题啊,今天才刚出现的。

后来看到有人在location段加dns,才想起来原来nginx的服务器配的dns服务器停了,那就来更新一下dns服务器吧:

vi /etc/resolv.conf

改成阿里云的DNS吧,223.5.5.5.

再重启nginx,好,一切正常。

nginx网址后自动添加斜线

原因:

公司的前端nginx,之前做的upstream负载,后来更新,直接放在了目录下面,所以之前用的地址xxxx.com/xxx就变成了xxxx.com/xxx/,但是大多数人收藏夹里放的是不带斜线/的。新地址因为放在了目录下面,实际上nginx是可以自动添加斜线的,但添加后的地址不正确,这里就要用的nginx的两个参数:

1、server_name_in_redirect on(默认),URL 重定向为: server_name 中的第一个域名 + 目录名 + /;
2、server_name_in_redirect off,URL 重定向为: 原 URL 中的域名 + 目录名 + /。

port_in_redirect off

如果port_in_redirect为off时,那么始终按照默认的80端口;如果该指令打开,那么将会返回当前正在监听的端口。

因为公司的nginx是443端口,原先在访问的时候自动把端口号弄上去了,所以就把port_in_redirect off掉就行了。