Centos7源码安装Tengine
tengine是淘宝基于nginx开发的一款web服务,完全兼容nginx,并增加了部分功能,以下是在centos7.3最小化安装的情况下安装tengine-2.2.0版本,为了方便后期使用,我是安装了所有模块,如果明确所需的模块,可以自定义指定的模块
下载源码文件
到以下网站下载源码包:http://tengine.taobao.org/download_cn.html 或直接用wget命令下载
wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz解压下载文件
tar -zxf tengine-2.2.0.tar.gz安装部分模块依赖的软件
yum install -y gcc gcc-c++ pcre pcre-devel openssl-devel libxml2-devel libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed GeoIP-devel配置并指定安装目录;
为了方便后期使用,我是安装了所有模块,如果明确所需的模块,可以 ./configure --help 查看并自定义指定的模块
./configure --enable-mods-static=all --prefix=/opt/nginx --with-ipv6
make && make install查看安装模块
/opt/nginx/sbin/nginx -V服务控制,第15节有添加至系统服务的操作说明
/opt/nginx/sbing/nginx
/opt/nginx/sbing/nginx -s stop
/opt/nginx/sbing/nginx -s reloadproxy_pass配置说明
nginx proxy_pass后的url加不加/的区别,在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。下面四种情况分别用http://192.168.1.4/proxy/test.html 进行访问。 第一种:
会被代理到http://127.0.0.1:81/test.html 这个url
第二种(相对于第一种,最后少一个 /)
会被代理到http://127.0.0.1:81/proxy/test.html 这个url
第三种:
会被代理到http://127.0.0.1:81/ftlynx/test.html 这个url。
第四种情况(相对于第三种,最后少一个 / ):
会被代理到http://127.0.0.1:81/ftlynxtest.html 这个url
上面的结果都是本人结合日志文件测试过的。从结果可以看出,应该说分为两种情况才正确。即http://127.0.0.1:81 (上面的第二种) 这种和 http://127.0.0.1:81/…. (上面的第1,3,4种) 这种。
配置示例1
配置示例2
Nginx配置访问用户名、密码
nginx可以配置用户名和密码来限制对某些站点进行访问,不过保存的密码并不是明文的,而是进行了crypt加密后的字符串。加密可以用htpasswd来实现。
如果后续还要添加用户,不能使用 -c参数,否则会将之前的内容删除,直接指定密码文件 加用户名即可
修改nginx配置; 在server 或 location 下加入以下两行内容
注:加在server中,server下所有目录均需要密码;加在指定location,该location访问需要密码
配置为下载服务器
12、nginx禁止IP、非指定域名访问 禁止未知域名解析
在nginx.conf中的所有server前增加一个_的server_name ,return到404或403。后面每个server块中必须设置server_name 指定域名,否则不能访问。
空白页
日志格式,写在http{}里
json格式
centos7添加nginx为系统服务,通过systemctl 控制
在系统服务目录创建nginx.service文件
服务控制
关闭favicon.ico 日志记录 禁止访问隐藏文件
把以下配置放到 server {} 块.
nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:
[root] 语法:root path 默认值:root html 配置段:http、server、location、if [alias] 语法:alias path 配置段:location
root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。 root的处理结果是:root路径+location路径 alias的处理结果是:使用alias路径替换location路径 alias是一个目录别名的定义,root则是最上层目录的定义。 还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~
root示例:
访问 http://domain.com/test/index.html 实际路径为 html/test/index.html
alias示例:
访问 http://domain.com/test/index.html 实际路径为 html/index.html alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。而root则不会丢弃 location后面的路径,
注意:
使用alias时,目录名后面一定要加"/"。
alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
alias只能位于location块中。(root可以不放在location中)
缓存配置
301 跳转
301 跳转(官方推荐)
同一个服务,内部 rewrite跳转
BAD:
GOOD:
BETTER:
nginx屏蔽指定URL恶意扫描
^0481a6
将日志中被恶意尝试扫描的URL直接返回444状态码,该状态码表明服务器没有返回信息给客户端并且关闭了连接
nginx location匹配规则
location匹配命令
location 匹配的优先级(与location在配置文件中的顺序无关) = 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。 普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。 ^~ 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。 最后匹配理带有""和"*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。
ngxin 反代websocket协议示例
WebSocket 可以减小客户端与服务器端建立连接的次数,减小系统资源开销,只需要一次 HTTP 握手,整个通讯过程是建立在一次连接/状态中,也就避免了 HTTP 的非状态性,服务端会一直与客户端保持连接,直到你关闭请求,同时由原本的客户端主动询问,转换为服务器有信息的时候推送
大多数用它还来做实时通信的功能,我们可以使用 Swoole 的 WebSocket\Server 来作为服务端
客户端的话,支持就很多了,比如 Chrome/Firefox/高版本 IE/Safari 等浏览器内置了 JS 语言的 WebSocket 客户端、微信小程序开发框架内置的 WebSocket 客户端、异步的 PHP 程序中可以使用 Swoole\Http\Client 作为 WebSocket 客户端等等
ws 和 wss 是什么?有什么区别 Websocket 使用 ws 或 wss 的统一资源标志符,类似于 HTTP 或 HTTPS,其中 wss 表示在 TLS 之上的 Websocket ,相当于 HTTPS 了
默认情况下,Websocket 的 ws 协议使用 80 端口,wss 协议默认使用 443 端口
重启后 访问时使用 ws://domain.com:port/ws/ 即可
开启压缩提高 数据传输效率
通过开启gzip压缩功能将较大的数据进行压缩后再传输,提高内容加载速度。可配置位置http、server和location
同时还要根据实际情况调整gzip_types,来控制要压缩的类型。 支持的类型如下
最后更新于