Nginx安装,⽬录结构与配置⽂件详解
1.Nginx简介
Nginx(发⾳同 engine x)是⼀款轻量级的Web 服务器/反向代理服务器及电⼦邮件(IMAP/POP3)代理服务器,并在⼀个BSD-like 协议下发⾏。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国⼤型的⼊⼝⽹站及搜寻引擎Rambler(俄⽂:Рамблер)使⽤。 其特点是占有内存少,并发能⼒强,事实上nginx的并发能⼒确实在同类型的⽹页伺服器中表现较好.⽬前中国⼤陆使⽤nginx⽹站⽤户有:新浪、⽹易、 腾讯,另外知名的微⽹志Plurk也使⽤nginx。
a)为什么Nginx的总体性能⽐Apache⾼?
Nginx使⽤最新的epoll(Linux2.6内核)和kqueue(freebsd)⽹络I/O模型,⽽Apache使⽤的是传统的 select模型,⽬前Linux下能够承受并发访问的
Squuid,Memcached都是采⽤的是epoll⽹络I/O模型。
b)那么如 何正确的选择web服务器呢?
静态业务:⾼并发,采⽤Nginx或者lighttpd
动态业务:采⽤Nginx或Apache均可
既有动态业务也有静态业务:Nginx或Apache均可,不要多选要单选
动态业务可有前段代理(haproxy),根据页⾯元素的类型,向后转发相应的服务器进⾏处理。
说明:Nginx做web(Apache,lighttpd)反向代理(haproxy,lvs,nat)缓存服务器(squid)
c)windows浏览器访问报错处理解决⽅法:
1)ping 跟ip 物理通不通
2)telnet ip :端⼝ 浏览器到web服务通不通
3)服务器本地curl ip web服务开没开
linux离线安装nginx详细教程4)查看错误⽇志如:cat /application/nginx/error_log
Pcre全称(Perl Compatible Regular Expressions),中⽂perl兼容正则表达式,官⽅站点为 ,安装pcre库是为了使Nginx⽀持HTTP Rewrite模块,安装如下:
1)查看当前Linux系统环境,命令如下:
[root@www ~]# cat /etc/redhat-release
CentOS release 6.6(Final)
[root@www ~]# uname -r
2.6.32-504.el6.x86_64
[root@www ~]# uname -m
x86_64#<==64位系统
2)采⽤yum安装⽅式安装pcre,命令如下:
[root@www ~]# yum install pcre pcre-devel -y
[root@www ~]# rpm -qa pcre pcre-devel
3)yum安装操作后检查安装结果,命令如下:(pcre-7.8-6.el6.x86_64提⽰:yum安装的pcre版本有些低,不过⼀般情况不影响使⽤)
[root@www ~]# rpm -qa pcre pcre-devel
pcre-devel-7.8-6.el6.x86_64
4)编译安装pcre
wget sourceforge/projects/pcre/files/pcre/7.80/pcre-7.
tar zxf pcre-7.
cd pcre-7.80
./configure
make && make install
cd ../
2.安装Nginx
Nginx的英⽂官⽅⽹站是,在这⾥可以查看Nginx的各个软件版本信息。Nginx软件有三种版本:稳定版、开发版和历史稳定版
1.检查并安装Nginx基础依赖包pcre-devel、openssl-devel操作命令如下:
[root@www ~]# rpm -qa pcre-devel pcre
pcre-devel-7.8-6.el6.x86_64 #<==pcre的devel包已经安装!
pcre-7.8-6.el6.x86_64 #<==pcre包已经安装!
[root@www ~]# rpm -qa openssl-devel openssl
openssl-1.0.1e-30.el6.x86_64 #<==这⾥没有opensll“devel”字符串的包
2.安装openssl-devel,安装openssl-devel的命令及检查命令如下:
[root@www ~]# yum install -y openssl openssl-devel
[root@www ~]# rpm -qa openssl openssl-devel
openssl-devel-1.0.1e-30.el6.8.x86_64
openssl-1.0.1e-30.el6.8.x86_64
3.开始安装Nginx
wget -q http:///download/nginx-1.6.
#下载软件包,进⼊http:///download/ 复制对应版本的链接地址。提⽰,如果发现Nginx软件下载地址已不可⽤,可能版本已更新,可去官⽅地址http://下载。
4.安装的操作过程演⽰
[root@www ~]# mkdir -p /home/tools
[root@www ~]# cd /home/tools
[root@www tools]# wget -q http:///download/nginx-1.6.
[root@www tools]# ls -l nginx-1.6.
-rw-r--r--1 root root 804164 11⽉ 23 15:26 nginx-1.6.
[root@www tools]# useradd nginx -s /sbin/nologin -M
[root@www tools]# tar xf nginx-1.6.
[root@www tools]# cd nginx-1.6.3
[root@www nginx-1.6.3]#./configure --user=nginx --group=nginx --prefix=/application/nginx --with-http_stub_status_module --with-http_ssl_module
[root@www nginx-1.6.3]# make
[root@www nginx-1.6.3]# make install
[root@www nginx-1.6.3]# ln -s /application/nginx-1.6.3 /application/nginx
[root@www nginx-1.6.3]# ls -l /application/nginx/总⽤量 16
drwxr-xr-x. 2 root root 4096 7⽉ 20 11:19 conf
drwxr-xr-x. 2 root root 4096 7⽉ 20 11:19 html
drwxr-xr-x. 2 root root 4096 7⽉ 20 11:19 logs
drwxr-xr-x. 2 root root 4096 7⽉ 20 11:19 sbin
安装过程出现如下错误,执⾏命令:
yum install openssl openssl-devel-y
出现的错误信息如下:
./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules,or install the OpenSSL library
into the system,or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.
3.启动并检查安装结果
1- 启动前检查配置⽂件语法,执⾏命令
[root@www tools]# /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.6.3/f syntax is ok
nginx: configuration file /application/nginx-1.6.3/f test is successful
2-启冬Nginx服务,执⾏命令
/
application/nginx/sbin/nginx
3-查看Nginx服务对应的端⼝是否启动
⽅法⼀; lsof -i :80
⽅法⼆; netstat -lnt|grep 80
4.检查Nginx启动实际效果
在浏览器输⼊ 10.0.0.8 (10.0.0.8wei an安装Nginx服务器的IP地址)
在Linux ⽤wget命令检测 wget 本机的连接的IP地址
curl命令检测 curl本机连接的ip地址()
4.Nginx软件功能模块说明
1)Nginx核⼼功能模块(Coer functionality),主要负责Nginx的全局应⽤,针对主配置⽂件Main区块和Events区块,(更多查看) 2)标准的http功能模块集合,(可以查看更多的功能模块)
企业应⽤场景功能模块汇总
5. Nginx⽬录结构
执⾏命令 tree /application/nginx ;如果tree命令不到就执⾏ yum install tree -y安装
1 [root@www ~]# tree /application/nginx/
2 /application/nginx/
3 |-- client_body_temp
4 |-- conf #这是Nginx所有配置⽂件的⽬录,极其重要
5 | |-- f #fastcgi相关参数的配置⽂件
6 | |-- f.default #f的原始备份
7 | |-- fastcgi_params #fastcgi的参数⽂件
8 | |-- fastcgi_params.default
9 | |-- koi-utf
10 | |-- koi-win
11 | |-- pes #媒体类型,
12 | |-- pes.default
13 | |-- f #这是Nginx默认的主配置⽂件
14 | |-- f.default
15 | |-- scgi_params #scgi相关参数⽂件,⼀般⽤不到
16 | |-- scgi_params.default
17 | |-- uwsgi_params #uwsgi相关参数⽂件,⼀般⽤不到
18 | |-- uwsgi_params.default
19 | `-- win-utf
20 |-- fastcgi_temp #fastcgi临时数据⽬录
21 |-- html #这是编译安装时Nginx的默认站点⽬录,类似
22 Apache的默认站点htdocs⽬录
23 | |--50x.html # 错误页⾯优雅替代显⽰⽂件,例如:出现502错误时会调⽤此页⾯
24 # error_page 500502503504 /50x.html;
25 | `-- index.html # 默认的⾸页⽂件,⾸页⽂件名字是在f中事先定义好的。
26 |-- logs #这是Nginx默认的⽇志路径,包括错误⽇志及访问⽇志
27 | |-- access.log # 这是Nginx的默认访问⽇志⽂件,使⽤tail -f access.log,可以实时观看⽹站⽤户访问情况信息
28 | |-- error.log # 这是Nginx的错误⽇志⽂件,如果Nginx出现启动故障等问题,⼀定要看看这个错误⽇志
29 | `-- nginx.pid # Nginx的pid⽂件,Nginx进程启动后,会把所有进程的ID号写到此⽂件
30 |-- proxy_temp #临时⽬录
31 |-- sbin #这是Nginx命令的⽬录,如Nginx的启动命令nginx
32 | `-- nginx #Nginx的启动命令nginx
33 |-- scgi_temp #临时⽬录
34 `-- uwsgi_temp #临时⽬录
35 9 directories,21 files
6)Nginx主配置⽂件f
1.Nginx主配置⽂件f是⼀个纯⽂本类型的⽂件(其他配置⽂件也是如此)Nginx整个配置⽂件f主题框架:
2.查看Nginx配置⽂件
1 [root@www conf]# egrep -v "#|^$" f.default←去掉包含#号和空⾏的内容
2 worker_processes 1;← worker进程的数量
3 events { ←事件区块开始
4 worker_connections 1024;←每个worker进程⽀持的最⼤连接数
5 } ←事件区块结束
6 http { ← HTTP区块开始
7 include pes;← Nginx⽀持的媒体类型库⽂件
8 default_type application/octet-stream;←默认的媒体类型
9 sendfile on;←开启⾼效传输模式
10 keepalive_timeout 65;←连接超时
11 server { ←第⼀个Server区块开始,表⽰⼀个独⽴的虚拟主机站点
12 listen 80;←提供服务的端⼝,默认80
13 server_name localhost;←提供服务的域名主机名
14 location / { ←第⼀个location区块开始
15 root html;←站点的根⽬录,相当于Nginx的安装⽬录
16 index index.html index.htm;←默认的⾸页⽂件,多个⽤空格分开
17 } ←第⼀个location区块结果
18 error_page 500502503504 /50x.html;←出现对应的http状态码时,使⽤50x.html回应客户
19 location = /50x.html { ←location区块开始,访问50x.html
20 root html;←指定对应的站点⽬录为html
21 }
22 }
Nginx配置⽂件
1 user nginx nginx; #定义Nginx运⾏的⽤户和⽤户组
2 worker_processes 1; #nginx进程数,建议设置为等于CPU总核⼼数。
3 error_log /var/log/nginx/error.log info; #全局错误⽇志定义类型,[ debug | info | notice | warn | error | crit ]
4 pid /var/run/nginx.pid; #进程⽂件
5 worker_rlimit_nofile 1024; #⼀个nginx进程打开的最多⽂件描述符数⽬,理论值应该是最多打开⽂件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以#建议与ulimit -n的值保持⼀致 6
7 events
8 {
9 use epoll; #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的⾼性能⽹络I/O模型,
如果跑在FreeBS #D上⾯,就⽤kqueue模型。
10
11 worker_connections 65535; #单个进程最⼤连接数(最⼤连接数=连接数*进程数)
12 }
13
14
15
16 http #HTTP区块开始
17 {
18 pes; #Nginx⽀持的媒体类型库⽂件
19 default_type application/octet-stream; #默认媒体类型
20 #charset utf-8; #默认编码
21 server_names_hash_bucket_size 128; #服务器名字的hash表⼤⼩
22 client_header_buffer_size 32k; #上传⽂件⼤⼩限制
23 large_client_header_buffers 4 64k; #设定请求缓
24 client_max_body_size 8m; #设定请求缓
25 sendfile on; #开启⾼效⽂件传输模式,sendfile指令指定nginx是否调⽤sendfile函数来输出⽂件,对于普通应⽤设为 on,如果⽤来进⾏下载等应⽤磁盘IO重负载应⽤,可设置为o #ff,以平衡磁盘与⽹络I/O处理速度,降低系统的负
26 autoindex on; #开启⽬录列表访问,合适下载服务器,默认关闭。
27 tcp_nopush on; #防⽌⽹络阻塞
28 tcp_nodelay on; #防⽌⽹络阻塞
29 keepalive_timeout 120; #连接超时,单位是秒
30
31#FastCGI相关参数是为了改善⽹站的性能:减少资源占⽤,提⾼访问速度。
32 fastcgi_connect_timeout 300;
33 fastcgi_send_timeout 300;
34 fastcgi_read_timeout 300;
35 fastcgi_buffer_size 64k;
36 fastcgi_buffers 4 64k;
37 fastcgi_busy_buffers_size 128k;
38 fastcgi_temp_file_write_size 128k;
39
40#gzip模块设置
41 gzip on; #开启gzip压缩输出
42 gzip_min_length 1k; #最⼩压缩⽂件⼤⼩
43 gzip_buffers 4 16k; #压缩缓冲区
44 gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使⽤1.0)
45 gzip_comp_level 2; #压缩等级
46 gzip_types text/x-javascript text/css application/xml; #压缩类型,默认就已经包含text/html,所以下⾯就不⽤再写了,写上去也不会有问题,但是会有⼀个warn。
47 gzip_vary on;
48 #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使⽤
49
50
51
52#虚拟主机的配置
53 server
54 {
55
56 listen 80; #监听端⼝
57
58 server_name localhost; #提供服务的域名主机名
59 location / { #第⼀个location区块开始
60 root html; #站点的根⽬录,相当于Nginx的安装⽬录
61 index index.html index.htm index.jsp; #默认的⾸页⽂件,多个⽤空格分开
62 } #第⼀个location区块结果
63
64
65
66#图⽚缓存时间设置
67 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
68 {
69 expires 10d;
70 }
71
72
73#JS和CSS缓存时间设置
74 location ~ .*\.(js|css)?$
75 {
76 expires 1h;
77 }
78
79
80#⽇志格式设定
81 log_format access '$remote_addr - $remote_user [$time_local] "$request" '
82 '$status $body_bytes_sent "$http_referer" '
83 '"$http_user_agent" $http_x_forwarded_for';
84
85 access_log /var/log/nginx/access_$(data+%F -d -1day).log access; #定义本虚拟主机的访问⽇志
86
87
88
89 location / { #对 "/" 启⽤反向代理
90 proxy_pass 127.0.0.1:88;
91 proxy_redirect off;
92 proxy_set_header X-Real-IP $remote_addr; #后端的Web服务器可以通过X-Forwarded-For获取⽤户真实IP
93 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
94
95#以下是⼀些反向代理的配置,可选
96 proxy_set_header Host $host;
97 client_max_body_size 10m; #允许客户端请求的最⼤单⽂件字节数
98 client_body_buffer_size 128k; #缓冲区代理缓冲⽤户端请求的最⼤字节数,
99 proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
100 proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
101 proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
102 proxy_buffer_size 4k; #设置代理服务器(nginx)保存⽤户头信息的缓冲区⼤⼩
103 proxy_buffers 4 32k; #proxy_buffers缓冲区,⽹页平均在32k以下的设置
104 proxy_busy_buffers_size 64k; #⾼负荷下缓冲⼤⼩(proxy_buffers*2)
105 proxy_temp_file_write_size 64k; #设定缓存⽂件夹⼤⼩,⼤于这个值,将从upstream服务器传
106
107 }
108
109#设定查看Nginx状态的地址
110 location /NginxStatus {
111 stub_status on;
112 access_log on;
113 auth_basic "NginxStatus";
114 auth_basic_user_file conf/htpasswd; #htpasswd⽂件的内容可以⽤apache提供的htpasswd⼯具来产⽣。
115
116 }
117
118#本地动静分离反向代理配置
119#所有jsp的页⾯均交由tomcat或resin处理
120 location ~ .(jsp|jspx|do)?$ {
121 proxy_set_header Host $host;
122 proxy_set_header X-Real-IP $remote_addr;
123 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
124 proxy_pass 127.0.0.1:8080;
125 }
126
127
128#所有静态⽂件由nginx直接读取不经过tomcat或resin
129 location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
130 { expires 15d; }
131 location ~ .*.(js|css)?$
132 { expires 1h; }
133 }
134 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论