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-releaseCentOS release 6.6(Final)
[root@www ~]# uname -r
 2.6.32-504.el6.x86_64
[root@www ~]# uname -mx86_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-develpcre-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 pcrepcre-devel-7.8-6.el6.x86_64       #<==pcre的devel包已经安装!pcre-7.8-6.el6.x86_64             #<==pcre包已经安装!
[root@www ~]# rpm -qa openssl-devel opensslopenssl-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-developenssl-devel-1.0.1e-30.el6.8.x86_64openssl-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*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 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 }

转载于:https://www.cnblogs.com/liang-io/p/9340335.html

Nginx安装,目录结构与配置文件详解相关推荐

  1. mysql安装后目录介绍,MySQL安装后的目录结构及配置文件详解

    MySQL安装后的目录结构及配置文件详解 MySQL安装后的目录结构及配置文件详解 MySQL目录结构说明 MySQL 安装完成后,会在磁盘上生成一个目录,该目录就被称为 MySQL 的安装目录. M ...

  2. MySQL目录结构以及配置文件详解

    昨天给大家进行了数据库介绍,今天将正式带领大家进入我们的课题MySQL讲解部分,首先给大家介绍一下MySQL安装后的目录结构和配置文件详解. 一.MySQL的目录结构 1.bin目录 用于放置一些可执 ...

  3. nuxt 目录结构及配置文件详解

    nuxt 目录结构详解 首先我们来看下使用 create-nuxt-app脚手架工具所创建的nuxt项目目录的结构, windows cmd 命令行输入,tree /f /a ,打印如下项目目录结构: ...

  4. CentOS 7以yum方式安装zabbix3.2及配置文件详解

    一.zabbix简介与环境准备 简介详见 ---> zabbix简介 环境准备: CentOS 7(node7):zabbix-server,web,mysql,agent mariadb:5. ...

  5. Nginx安装与使用(配置详解)

    前言 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大 ...

  6. 第 1-4 课:Flutter 项目结构及配置文件详解

    对于一门新语言或新技术的学习来说,在新建了项目之后,了解其项目结构及含义.配置文件的编写,这些对后续的开发和深入学习起到很重要的作用.俗话说磨刀不误砍柴工,Flutter 的学习也同理,我们在新建了 ...

  7. linux进程管理工具supervisor安装卸载、子配置文件详解、遇到的问题、supervisor group群组管理、启动一个springboot项目示例、update命令注意点

    简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 它是通过fork/exec的方式把这些被管 ...

  8. nginx的目录结构和配置文件

    sbin是主进程文件 logs是日志文件 html是默认加载网页 nginx.conf这是nginx的配置文件 内容:先看一下未注释的文件代表意思 #user  nobody;  #表示什么用户启动n ...

  9. Elasticsearch基础2——es配置文件、jvm配置文件、log4j2.properties配置文件详解

    文章目录 一.配置文件详解 1.1 elasticsearch.yml文件 1.1. 1 基础参数 1.1.1.1 自定义数据/日志目录 1.1.1.2 锁定物理内存 1.1.1.3 跨域设置 1.1 ...

最新文章

  1. Android StudioDay03-3(键盘导航)
  2. Android中的那些权限
  3. 基于Selenium2和TestNG的自动化测试
  4. push_heap算法 (即满足max-heap条件,最大值在根节点)
  5. 二级分类_iOS 13.3正式版,增加信息联系人二级分类,支持联通VoLTE功能
  6. 210307共享内存的读写
  7. 使用iOS 4越狱iPhone或iPod Touch
  8. 关于非阻塞的recv的时候返回的处理
  9. 大数据之_数据采集Flume_Flume介绍---Flume工作笔记001
  10. linux如何用gcc编译c程序,Ubuntu之如何使用gcc编译C语言程序
  11. Transformer的中年危机
  12. 网站的动静分离实践(动静分离)
  13. deepin linux连接不上网络,把Deepin升级到15.8桌面版后无线上不了网的解决方法
  14. 分式化简结果要求_中考分式化简求值题题型归纳
  15. 论文翻译2-SRAVS-Improving Quality of Experience by Adaptive Video Streaming with Super-Resolution
  16. 4567: [Scoi2016]背单词 trie+贪心
  17. Transformer---RNN网络
  18. 解析国内冷链物流的发展现状
  19. OpenHarmony恢复启动子系统init进程之服务管理与发布
  20. JMS入门(一)--JMS基础

热门文章

  1. MATLAB中的视角处理
  2. 各种变换的原理----DX版本
  3. cnn风格迁移_愚蠢的CNN,换个马甲就认不出猫!但,这病能治 | ICLR Oral
  4. 山西煤炭职业技术学院计算机信息管理,山西煤炭职业技术学院计算机信息系
  5. java设置子线程优先级_Java 实例 - 线程优先级设置
  6. IBM Machine Learning学习笔记(一)——Exploratory Data Analysis for Machine Learning
  7. android multipartentity 怎么上传参数,android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b...
  8. php文字红色代码,IOS_IOS中一段文字设置多种字体颜色代码,给定range和需要设置的颜色, - phpStudy...
  9. shell 按文件每行长度排序
  10. 如何使用wordnet