Nginx服务器配置

}

location /logs/MtnoWeb_log.log {

proxy_pass http://mt-nx;

proxy_redirect off;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

实现负载均衡

upstream test {

server 192.168.1.61:9099 weight=5 max_fails=2 fail_timeout=3;

server 192.168.1.61:8099 weight=1 max_fails=2 fail_timeout=3;

}

server {

listen 8888;

server_name localhost;

location / {

proxy_pass http://test ;

proxy_redirect off;

}

比价一下负载均衡和反向代理,配置很像吧,如果想要对一个项目做负载均衡,可以把目标服务器绑定一组upstream,然后server中代理一下就可以了。

Nginx 可以通过 kill -HUP cat logs/nginx.pid 关闭nginx 进程达到重启Nginx的目的。比

start nginx

nginx.exe -s stop

nginx -s reload

要好用一些。并且可以通过这个结合bat/shell脚本以及定时任务实现Nginx日志按天(时间)分割。

Nginx还可以配置SSL证书,确保网站安全访问。


分割线


之后有同事做了一次Nginx分享,有些地方没有了解到,现在补充一下,方便自己以后回忆。

Nginx相对于Apache优势
  1. 高并发性能非常好,静态文件并发可以达到5w/s

  2. 反向代理性能非常好,可以用作负载均衡

  3. 内存和CPU占用率很低,约为Apache的1/5~1/10

  4. 对后端服务器有健康检查的功能

  5. 支持PHPcgi方式和fastcgi方式

  6. 配置代码简洁,且容易上手

Nginx支持高并发的原因

Nginx的高并发得益于epoll 模型,这种模型是异步非阻塞的,而Apache使用的是select 模型

select模型:句柄有事件响应时,select 遍历所有的句柄才能获取哪些句柄有事件通知

epoll 模型:epoll 对于句柄事件的选择不是遍历,而是事件响应,句柄上有事件就马上选择出来。

(1)select,poll实现需要自己不断轮询所有fd集合,直到设备就绪,期间可能要睡眠和唤醒多次交替。而epoll其实也需要调用epoll_wait不断轮询就绪链表,期间也可能多次睡眠和唤醒交替,但是它是设备就绪时,调用回调函数,把就绪fd放入就绪链表中,并唤醒在epoll_wait中进入睡眠的进程。虽然都要睡眠和交替,但是select和poll在“醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,这节省了大量的CPU时间。这就是回调机制带来的性能提升。

(2)select,poll每次调用都要把fd集合从用户态往内核态拷贝一次,并且要把current往设备等待队列中挂一次,而epoll只要一次拷贝,而且把current往等待队列上挂也只挂一次(在epoll_wait的开始,注意这里的等待队列并不是设备等待队列,只是一个epoll内部定义的等待队列)。这也能节省不少的开销。

nginx -t

//这个命令是检测配置文件是否正确。

//最好在nginx -s reload 命令之前执行-t ,x先检查配置文件

location 匹配规则及优先级

语法规则:

=

^~

~

~*

/

/url

样例解释

location = /url 等号表示精准匹配,只有完全匹配上才会生效,如找到,停止搜索

location ^~ /url ^~开头表示对URL路径进行前缀匹配,并且在正则匹配之前,若找到,停止匹配

location ~ /url 表示区分大小写的正则匹配,按照配置文件顺序匹配

location ~*表示不区分大小写的正则匹配,按照配置文件顺序匹配

location /url 不带任何修饰符,表示前缀匹配,在正则匹配之后

location / 一般匹配,任何没有匹配到其他的location的请求都会匹配到,相当于default

优先级

精确匹配 > 正则匹配 > 一般匹配

题目

location = / {

[ configuration A ]

}

location / {

[ configuration B ]

}

location /documents/ {

[ configuration C ]

}

location ^~ /images/ {

[ configuration D ]

}

location ~* .(gif|jpg|jpeg)$ {

[ configuration E ]

}

The “/” request will match configuration [], A

the “/index.html” request will match configuration [], B

the “/documents/document.html” request will match configuration [], C

the “/images/1.gif” request will match configuration [], D

and the “/documents/1.jpg” request will match configuration []. E

静态页面管理

每个应用中通常都会有很多的静态资源,比如jpg,png,css,js等等。这些静态资源如果每次都需要从服务器请求无疑会浪费很多资源。这个时候就可以使用nginx实现动静分离。

server {

listen 80;

server_name localhost;

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {

root html/static;

expires 1d;

#表示缓存在本地一天

}

}

虚拟主机

在真实的服务器环境,为了充分利用服务器资源,一台nginx服务器会同时配置N个虚拟域名主机,即多个域名对同一个80端口。

也可以用使用相同的域名配置不同的端口区分不同的虚拟主机。

Nginx提供了三种虚拟主机配置方式,

  1. 基于ip的虚拟主机,

  2. 基于端口的虚拟主机,

  3. 基于域名的虚拟主机。

最常用的是第三种,相对于 ip地址和端口号,域名更方便记忆和使用。

在这里插入图片描述

修改nginx.conf文件,添加两个虚拟主机,如下:

#配置虚拟主机a.test.com

server { #监听的ip和端口,配置本机ip和端口

listen 80;

#虚拟主机名称是a.test.com,请求域名a.test.com的url将由此server配置解析

server_name a.test.com;

#所有的请求都以/开始,所有的请求都可以匹配此

location location / {

#使用root指令指定虚拟主机目录即网页存放目录

root a_html;

#指定欢迎页面,按从左到右顺序查找

index index.html index.htm;

}

}

#配置虚拟主机b.test.com

server {

listen 80;

server_name b.test.com;

location / {

root b_html;

index index.html index.htm;

}

}

######反向代理

Nginx服务器的反向代理服务是其最常用的重要功能,由反向代理服务可以衍生出很多与此相关的nginx服务器重要功能。

我们工作中最常用的也是配置反向代理。

反向代理,其实客户端对代理是无感知的,因为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值