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模块。

阅读更多

终于,还是给黑色自由加上了https

原本黑色自由一直都是不带https的,懒得操作,也懒得操心。

起因是某天凌晨,在手机上打开黑色自由的时候,发现页面下方被加了一条广告。本来是习以为常的事情,但出现在了这里,就顿时觉得不爽,电信运营商猥琐这事早几年就知道,但没想到的是居然轮到了黑色自由的头上,无奈就只能套个https在上面了,加了ssl,总比裸http强吧。

操作方法就很简单,使用let’s encrypt的证书,certbot安装,它会自动帮你找到nginx配置文件里的站点,全程提问式,几分钟就搞定,然后自己写个crontab隔一个月跑一次自动更新一下就行,操作方法我就不写出来了,给个地址自己去看好了:

https://certbot.eff.org/lets-encrypt/debianbuster-nginx

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掉就行了。

网站的301重定向方法

今天在百度上才发现原来黑色自由带www的域名是无法打开的,原因是没有在nginx里面做301重定向。晚上回家就把www域名重定向了一下,方法有2种:

1、使用nginx的301重定向规则:

if ($host != ‘www.dfreedom.net’ ) {
rewrite ^/(.*)$ http://www.dfreedom.net/$1 permanent;
}

本站之前使用的就是nginx的301重定向,这次并没有使用。

2、域名的301重定向:

本站使用的是dnspod的服务,其系统本身就可以实现www的重定向:

QQ图片20140109185702

域名的301重定向对于网站来说是很有必要的,因为本站在nginx配置信息里面只写的顶级域名,www没有写进去,所以造成网站无法访问,国内的一些搜索引擎还是会默认爬www站。

debian下nginx不显示图片解决办法

vps用的是debian系统,装完cms后发现图片都显示不了,单独打开图片也无法显示,返回404,文件找不到,所以,应该是nginx配置问题。

在debian下,编辑/etc/nginx/site-available/default

添加:

location ~ \.(jpg|png|jpeg|bmp|gif|swf|css)$
{
access_log off;
expires 30d;
root /www/htdocs/market;
break;
}

将root后的路径改为你网站路径即可。

debian安装nginx php sqlite

接上回在easevps购买了17美元小内存vps,原本选择的是centos linux,因为很多人都在使用这个系统,都说系统稳定、性能好,结果在安装nginx php sqlite的时候蛋疼了,nginx php安装好以后,php-sqlite死活不行,网上的材料能试的都试了,包括那个repo,还是不行,估计只能够自己的编译make了,可我又不想费那事,最后还是换回了熟悉的debian系统。实践证明,debian nginx php sqlite绝对不是一般的方便,deb系的ubuntu也类似。

安装起来很方便,添加dotdeb的源:

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

然后apt-get update,再apt-get -y install php5-cgi php5-fpm php5-gd php5-suhosin php5-sqlite nginx sqlite3

基本上就安装完成了,具体nginx的配置,把locatons php的那一段启用就可以了,然后再web目录下丢一个phpinfo(),去浏览器里面看一下吧,整个系统是运行起来了。