Nginx入门笔记
这是一篇两年前学习nginx的笔记,整理出来以防需要用到,或者以后再继续补充关于使用docker发布,nginx代理或转发的请求头限制内容大小等配置。
一,Nginx入门
Nginx是一款轻量级的web服务器/反向代理服务器即电子邮件(IMAP/POP3/SMTP)代理服务器。Nginx由内核和模块组成,其中内核的设计非常微小和简洁,仅仅通过配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。其特点是占有内存少,并发能力强。
相对于Apache优点:
(1) 高并发响应性能非常好
(2) 反向代理性能非常强
(3) 内存和CPU占用率低
(4) 对后端服务有健康检查功能
(5) 配置代码简洁且容易上手
Nginx模块:
从结构上分为:核心模块,基础模块,第三方模块
核心模块:HTTP模块,EVENT模块,MAIL模块
基础模块:HTTP Access模块,HTTP FastCGI模块,HTTP Proxy模块,HTTP Rewrite模块
第三方模块:HTTP Upstream Request Hash模块,Notice模块和HTTP Access Key模块
Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll模型异步非阻塞,而Apache采用的是select模型。
Select特点:
Select选择语柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取哪些句柄有事件通知,因此效率是非常低。
Epoll特点:
Epoll对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历这个句柄链表,因此效率非常高。
二,Nginx安装
2.1 Mac安裝
下载nginx: http://nginx.org/en/download.html ,也要下载PCRE安装包(让nginx支持Rewrite功能):http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
安装PCRE
解压进入目录依次输入
./configure
make && make install
查看PCRE版本
pcre-config —version
安装nginx
解压进入目录后
./configure
安装
install
make install
查看nginx版本
/usr/local/nginx/sbin/nginx -v
启动nginx
进入 /usr/local/nginx/sbin目录,输入命令
sudo ./nginx
2.2 Windows安裝
下载nginx: http://nginx.org/en/download.html , 解壓到文件系統中.
命令行進入主目錄下, 運行以下命令 :
start nginx
然後進入瀏覽器, 訪問localhost
三,Nginx命令行
開啟Nginx服務
start nginx
-c 指定配置文件
-g 指定配置的指令
-p 指定运行目录
-s stop立刻停止服务,quit优雅停止服务,reload重载配置文件,reopen开始记录日志文件
-t 测试配置文件语法是否有错误
-v 版本信息
nginx -s stop # 立刻停止服務
nginx -s reload # 重新配置文件
四,Nginx反向代理
在hosts配置文件配置IP域名
127.0.0.1 eureka.com
配置nginx.conf
第一种:
server{
listen 80;
server_name eureka.com;
location / {
proxy_pass http://localhost:8761;
index index.html index.htm;
}
}
第二种:
upstream eureka-server{
server localhost:8761;
}
server{
listen 80;
server_name eureka.com;
location / {
proxy_pass http://eureka-server;
index index.html index.htm;
}
}
- proxy_pass URL:此配置将当前请求反向代理到URL参数指定的服务器上,URL可以是主机名或IP地址加端口的形式
- proxy_set_header Host $host:默认情况下反向代理是不会转发请求的Host头部的。如果需要转发,那么必须加上该配置;
- proxy_method METHOD:此配置项表示转发时的协议方法名,例如设置为 proxy_method POST,那么客户端发来的GET请求在转发时方法也会改为POST。
五,Nginx负载均衡
Nginx负载均衡要在nginx.conf中写入相关配置,主要对proxy_pass,upstream的使用。
几种负载均衡方式:
-
轮询(默认):每个请求按时间顺序逐一=分配到不同的后端服务器,如果后端服务器挂掉,能自动剔除。
-
weight权重:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
-
ip_hash哈希算法:每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器。
-
backup:其它所有的非backup机器挂掉或者忙的时候,请求backup机器。所以这台机器压力会最轻。
-
down:表示当前的server暂时不参与负载均衡。
实现配置:upstream eureka-server{ server localhost:8000 weight=3; server localhost:8001; } server{ listen 80; server_name eureka.com; location / { proxy_pass http://eureka-server; index index.html index.htm; } }
通过以上配置,在访问eureka.com时,由于配置了proxy_pass地址,所有请求都会通过nginx反向代理服务器,在服务器将请求转发给目的主机时,读取upstream为eureka-server的地址,读取分发策略,配置8761权重为3,所以nginx会将大部分请求发送给8761,较少交给8762。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81590.html