nginx的编译,和简单的配置问题
反向代理常见的lvs、haproxy。
缓存服务常见的。squid。vanish。常见的前端缓存。
Apache是多进程的web服务器,Nginx是多线程的web服务器。
Nginx的特点,对静态能力强,远胜Apache。对动态的没有Apache好。
Nginx小,方便简单灵活,比较具有发展潜力的软件,在性能上比Apache占用资源更少,对静态的处理更少,
Nginx的特性。是开源的,支持高并发的,高性能的,资源消耗少。
Nginx的三大功能
可以充当web服务
反向代理。(可以充当负载均衡,)
可以当缓存服务
Nginx的网路模型是同过异步io的模型epoll实现的
select是同步i/o阻塞网路模型。epoll是异步i/o非阻塞模型
编译,先安装支持包 pcre-devel OpenSSL-devel 创建程序用户Nginx。
解压缩。编译 编译的时候指定按照模块./configure --user=nginx --group=nginx --prefix=/usr/local/nginx-1.10.2/ --with-http_stub_status_module --with-http_ssl_module && make && make install
给Nginx创建软连接
修改映射文件 vim /etc/hosts
修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1;(工作的进程数,一般工作中服务器有几核就写几,最多不超过2倍) events {(时间函数) worker_connectiongs 1024;(进程里边的线程数,默认1024,一般我们写成他的20倍,极限65535) } http{ include mime.types; default_type application/octet-stream;(默认的类型) sendfile on;(开启Nginx的高效传输功能) keppalive_timeout 65;(连接保持时间时间秒为单位,好处会减低三次握手的额外开销,tigoa) server{ (一个server就带表一个网站) listen 80;(监听的端口) server_name localhost;(域名) location / { root html;(代表网页目录是从哪里开始的。是想对路径,相对于Nginx的安装目录) index index.html index.htm;(索引,只的目录时那个。) } } } ```
需要include导入文件脚本的路径是相对于脚本放置的目录的相对路径
例如:include extra/www.conf
一个服务器搭建多个网站
有3种方法。
1.基于不同域名的虚拟网站
2.基于不同端口的虚拟网站
3.基于不同ip的虚拟网站
想要阻止非法用户的访问,需要在新开一个web页面的配置
``` server{ listen 80 default_server; server_name _; location / { return 404; } } ```
状态信息也开启
``` server{ listen 80; server_name status.yuming.com;
location{ stub_status on;(开启健康状态) access_log off;(不开启日志) allow ip地址;(只容许什么地址查看) deny all;(拒绝一起连接) }
} ```
开启错误日志不要在函数里写,
error_log logs/error.log;
命令curl是模仿URl的,
参数-v能看详细的过程。
location 是Nginx里边非常重要的函数,可以同过正则表达式来过滤不同的URL里的uri部分。匹配到不同的uri进入到不同的location里也就可以看到不同的网页了
所以我们要明白如何过滤,和过滤的优先级。精确匹配>特殊正则>正则匹配>字符串匹配>默认匹配。
匹配是前缀匹配。
"="是精确匹配,不能有别的部分。只匹配uri部分。
单独写/是模糊查找,含有根就可以。是默认匹配是优先级最低的。
~代表进行正则。*表示不区分大小写正则匹配
^~是特殊的正则匹配,一旦加了这个后边的的东西匹配优先级搞过正则。
重写,替换域名
写法:rewrite 把什么 匹配成什么 permanent 有4种标记。last 。break redirect permanent 替换域名 if ($http_host ~* "^(.*)\.yunjisuan\.com"){ set $domke $1; rewrite ^(.*) http://www.yunjisuan.com/$domke break; }
给状态网页加密,需要安装一个服务httpd,要有htpasswd这个命令
命令;htpasswd -bc /usr/local/nginx/conf/htpasswd yunjiuan(用户) 123123(密码) 在sever的location里加入 auth_basic "题目"; auth_basic_user_file 文件的绝对路径;
Nginx的安全机制,在找不到首页的情况下将所有网页都显示,默认是关闭的。Apache是默认开启的,找不到首页Nginx报错403,是触发了安全机制,将这个给拒绝了,想要开启需要在配置文件的server里添加
autoindex on;