Nginx安装与使⽤(配置详解)
前⾔
是⼀款轻量级的Web 服务器/反向代理服务器及电⼦邮件(IMAP/POP3)代理服务器,并在⼀个BSD-like 协议下发⾏。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国⼤型的⼊⼝⽹站及搜索引擎Rambler(俄⽂:Рамблер)使⽤。
其特点是占有内存少,并发能⼒强,事实上nginx的并发能⼒确实在同类型的⽹页服务器中表现较
好。
什么是反向代理?
通常的代理服务器,只⽤于代理内部⽹络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上⽹的⽬的。这就是所谓的正向代理,⼀般就直接叫代理。
反向代理(Reverse Proxy)则是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部⽹络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为⼀个反向代理服务器。
Nginx 只做请求的转发,后台有多个http服务器提供服务,nginx的作⽤就是把请求转发给后⾯的服务器,决定把请求转发给谁处理。⼀、安装步骤
1.下载Nginx安装包
2.解压及⽬录
执⾏命令:tar -zxvf nginx-1.20. 对安装包进⾏解压,解压后进到⽬录:
· auto⽬录:存放⼤量的脚本⽂件,或configure脚本程序相关
· conf⽬录:存放nginx服务器的配置⽂件
· contrib⽬录:存放其他机构或组织贡献的⽂档资料
· html⽬录:存放默认⽹站⽂件
· man⽬录:存放nginx的帮助⽂档
· src⽬录:存放nginx的源代码
· CHANGES、CHANGES.ru、LICENSE、和README都是nginx服务器的相关⽂档资料
· configure⽬录:nginx⾃动安装脚本,⽤于检查环境,⽣成编译代码需要的makefile⽂件
3.安装依赖包
安装nginx模块依赖的软件包:
· openssl-devel包:为nginx模块提供密码算法、证书以及SSL协议等功能
· pcre-devel包:为nginx模块提供正则表达式库
·
zlib-devel包:为nginx模块提供数据压缩⽤的函数库
执⾏命令yum -y install pcre-devel openssl-devel,⽽pcre-devel和zlib-devel会作为依赖⾃动被安装。
4.安装nginx
1、切换到/home/soft/nginx/nginx-1.20.1路径下,执⾏./configure,/configure⽤于对即将安装的软件进⾏配置,检查当前的环境是否满⾜安装软件的依赖关系,如图:
执⾏命令若出现./configure c compiler cc is not found,执⾏命令yum -y install gcc gcc-c++ autoconf automake make即可
2、执⾏make && make install命令
安装成功,切换到⽬录/usr/local/nginx(默认安装路径)
⼆、配置
1.服务启动
进⼊sbin⽬录,./nginx命令执⾏nginx脚本,成功启动nginx
,浏览器打开虚拟机ip:80
conf⽬录下,除了f,其余配置⽂件,⼀般只需要使⽤默认提供即可。
· 全局块:配置影响nginx全局的指令。⼀般有运⾏nginx服务器的⽤户组,nginx进程pid存放路径,⽇志存放路径,配置⽂件引⼊,允许⽣成worker process数等。
· events块:配置影响nginx服务器或与⽤户的⽹络连接。有每个进程的最⼤连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个⽹路连接,开启多个⽹络连接序列化等。
· http块:可以嵌套多个server,配置代理,缓存,⽇志定义等绝⼤多数功能和第三⽅模块的配置。如⽂件引⼊,mime-type定义,⽇志⾃定义,是否使⽤sendfile传输⽂件,连接超时时间,单连接请求数等。
· server块:配置虚拟主机的相关参数,⼀个http中可以有多个server。
· location块:配置请求的路由,以及各种页⾯的处理情况。
具体配置
├── worker_process表⽰⼯作进程的数量,⼀般设置为cpu的核数
├── worker_connections表⽰每个⼯作进程的最⼤连接数
├── server{}块定义了虚拟主机
├── listener监听端⼝
├── server_name监听域名
├── location{}是⽤来为匹配的 URI 进⾏配置,URI 即语法中的“/uri/”。location / {}匹配任何查询,因为所有请求都以 / 开头。
├── root指定对应uri的资源查路径,这⾥html为相对路径,完整路径为/usr/local/nginx/html/
├── index指定⾸页index⽂件的名称,可以配置多个,以空格分开。如有多个,按配置顺序查。
⽰例:
>># 每个指令必须有分号结束。>>>##
#user administrator administrators; #配置⽤户或者组,默认为nobody nobody。
#worker_processes 2; #允许⽣成的进程数,默认为1
#pid /nginx/pid/nginx.pid; #指定nginx进程运⾏⽂件存放地址
error_log log/error.log debug;#制定⽇志路径,级别。这个设置可以放⼊全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|em erg
events {
accept_mutex on;#设置⽹路连接序列化,防⽌惊现象发⽣,默认为on
multi_accept on;#设置⼀个进程是否同时接受多个⽹络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024;#最⼤连接数,默认为512
}
http {
include pes;#⽂件扩展名与⽂件类型映射表
default_type application/octet-stream;#默认⽂件类型,默认为text/plain
#access_log off; #取消服务⽇志
log_format myFormat '$remote_addr–$remote_user [$time_local] $request$status$body_bytes_sent$http_referer$http_user_agent$http_x_forwarde d_for';#⾃定义格式
access_log log/access.log myFormat;#combined为⽇志格式的默认值
sendfile on;#允许sendfile⽅式传输⽂件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k;#每个进程每次调⽤传输数量不能⼤于设定的值,默认为0,即不设上限。
keepalive_timeout 65;#连接超时时间,默认为75s,可以在http,server,location块。
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup;#热备
}
nginx ssl证书配置error_page 404 www.baidu;#错误页
server {
keepalive_requests 120;#单连接请求上限次数。
listen 4545;#监听端⼝
server_name 127.0.0.1;#监听地址
location ~*^.+$ {#请求的url过滤,正则匹配,~为区分⼤⼩写,~*为不区分⼤⼩写。
#root path; #根⽬录
#; #设置默认页
proxy_pass mysvr;#请求转向mysvr 定义的服务器列表
deny 127.0.0.1;#拒绝的ip
allow 172.18.5.54;#允许的ip
}
}
}
上⾯是nginx的基本配置,需要注意的有以下⼏点:
1、log_format myFormat相关
remote_addr 与http_x_forwarded_for ⽤以记录客户端的ip地址;
remote_user :⽤来记录客户端⽤户名称;
time_local : ⽤来记录访问时间与时区;
request : ⽤来记录请求的url与http协议;
status : ⽤来记录请求状态;成功是200;
body_bytes_s ent :记录发送给客户端⽂件主体内容⼤⼩;
http_referer :⽤来记录从那个页⾯链接访问过来的;
http_user_agent :记录客户端浏览器的相关信息;
2、惊现象:⼀个⽹路连接到来,多个睡眠的进程被同事叫醒,但只有⼀个进程能获得链接,这样会影响系统性能。
3、每个指令必须有分号结束。
配置完成后重新启动nginx
nginx -t # 查看nginx状态
nginx -s reload # 重新载⼊配置⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论