打赏 jQuery火箭图标返回顶部代码

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服务开没开
4)查看错误日志如:cat /application/nginx/error_log

Pcre全称(Perl Compatible Regular Expressions),中文perl兼容正则表达式,官方站点为 http://www.pcre.org,安装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    http://sourceforge.net/projects/pcre/files/pcre/7.80/pcre-7.80.tar.gz
tar zxf pcre-7.80.tar.gz
cd pcre-7.80
./configure
make && make install
cd ../ 

2.安装Nginx

  Nginx的英文官方网站是http://nginx.org/,在这里可以查看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://nginx.org/download/nginx-1.6.3.tar.gz
#下载软件包,进入http://nginx.org/download/ 复制对应版本的链接地址。提示,如果发现Nginx软件下载地址已不可用,可能版本已更新,可去官方地址http://www.nginx.org下载。

  4.安装的操作过程演示

[root@www ~]# mkdir -p /home/tools
[root@www ~]# cd /home/tools
[root@www tools]# wget -q http://nginx.org/download/nginx-1.6.3.tar.gz
[root@www tools]# ls -l nginx-1.6.3.tar.gz 
-rw-r--r--1 root root 804164 11月 23 15:26 nginx-1.6.3.tar.gz
[root@www tools]# useradd nginx -s /sbin/nologin -M
[root@www tools]# tar xf nginx-1.6.3.tar.gz 
[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/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.6.3/conf/nginx.conf test is successful

  2-启冬Nginx服务,执行命令

/application/nginx/sbin/nginx

  3-查看Nginx服务对应的端口是否启动

方法一; lsof -i :80

方法二; netstat -lnt|grep 80

  4.检查Nginx启动实际效果

  在浏览器输入 http://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区块,http://nginx.org/en/docs/ngx_core_module.html(更多查看)

  2)标准的http功能模块集合,http://nginx.org/en/docs(可以查看更多的功能模块)

                                   企业应用场景功能模块汇总

                  

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 |   |-- fastcgi.conf                    #fastcgi相关参数的配置文件
 6 |   |-- fastcgi.conf.default                 #fastcgi.conf的原始备份
 7 |   |-- fastcgi_params                   #fastcgi的参数文件
 8 |   |-- fastcgi_params.default
 9 |   |-- koi-utf
10 |   |-- koi-win
11 |   |-- mime.types                      #媒体类型,
12 |   |-- mime.types.default
13 |   |-- nginx.conf                      #这是Nginx默认的主配置文件
14 |   |-- nginx.conf.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   #     默认的首页文件,首页文件名字是在nginx.conf中事先定义好的。
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主配置文件nginx.conf

  1.Nginx主配置文件nginx.conf是一个纯文本类型的文件(其他配置文件也是如此)Nginx整个配置文件nginx.conf主题框架:

  

  2.查看Nginx配置文件

 1 [root@www conf]# egrep -v "#|^$" nginx.conf.default     ←去掉包含#号和空行的内容
 2 worker_processes  1;                ← worker进程的数量
 3 events {                              ← 事件区块开始
 4     worker_connections  1024;            ←每个worker进程支持的最大连接数
 5 }                                    ←事件区块结束
 6 http {                               ← HTTP区块开始
 7     include       mime.types;            ← 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 include mime.types;                   #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处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
 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 http://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*2105 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 http://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 }
posted @ 2018-07-20 11:00  浪漫De刺猬  阅读(27045)  评论(4编辑  收藏  举报