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安装
[root@www ~]# tree /application/nginx/
/application/nginx/
|-- client_body_temp
|-- conf #这是Nginx所有配置文件的目录,极其重要
| |-- fastcgi.conf #fastcgi相关参数的配置文件
| |-- fastcgi.conf.default #fastcgi.conf的原始备份
| |-- fastcgi_params #fastcgi的参数文件
| |-- fastcgi_params.default
| |-- koi-utf
| |-- koi-win
| |-- mime.types #媒体类型,
| |-- mime.types.default
| |-- nginx.conf #这是Nginx默认的主配置文件
| |-- nginx.conf.default
| |-- scgi_params #scgi相关参数文件,一般用不到
| |-- scgi_params.default
| |-- uwsgi_params #uwsgi相关参数文件,一般用不到
| |-- uwsgi_params.default
| `-- win-utf
|-- fastcgi_temp #fastcgi临时数据目录
|-- html #这是编译安装时Nginx的默认站点目录,类似
Apache的默认站点htdocs目录
| |--50x.html # 错误页面优雅替代显示文件,例如:出现502错误时会调用此页面
# error_page 500502503504 /50x.html;
| `-- index.html # 默认的首页文件,首页文件名字是在nginx.conf中事先定义好的。
|-- logs #这是Nginx默认的日志路径,包括错误日志及访问日志
| |-- access.log # 这是Nginx的默认访问日志文件,使用tail -f access.log,可以实时观看网站用户访问情况信息
| |-- error.log # 这是Nginx的错误日志文件,如果Nginx出现启动故障等问题,一定要看看这个错误日志
| `-- nginx.pid # Nginx的pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
|-- proxy_temp #临时目录
|-- sbin #这是Nginx命令的目录,如Nginx的启动命令nginx
| `-- nginx #Nginx的启动命令nginx
|-- scgi_temp #临时目录
`-- uwsgi_temp #临时目录
9 directories,21 files
6)Nginx主配置文件nginx.conf
1.Nginx主配置文件nginx.conf是一个纯文本类型的文件(其他配置文件也是如此)Nginx整个配置文件nginx.conf主题框架:
2.查看Nginx配置文件
[root@www conf]# egrep -v "#|^$" nginx.conf.default ←去掉包含#号和空行的内容
worker_processes 1; ← worker进程的数量
events { ← 事件区块开始
worker_connections 1024; ←每个worker进程支持的最大连接数
} ←事件区块结束
http { ← HTTP区块开始
include mime.types; ← Nginx支持的媒体类型库文件
default_type application/octet-stream; ← 默认的媒体类型
sendfile on; ←开启高效传输模式
keepalive_timeout 65; ←连接超时
server { ←第一个Server区块开始,表示一个独立的虚拟主机站点
listen 80; ← 提供服务的端口,默认80
server_name localhost; ←提供服务的域名主机名
location / { ←第一个location区块开始
root html; ←站点的根目录,相当于Nginx的安装目录
index index.html index.htm; ← 默认的首页文件,多个用空格分开
} ←第一个location区块结果
error_page 500502503504 /50x.html; ← 出现对应的http状态码时,使用50x.html回应客户
location = /50x.html { ←location区块开始,访问50x.html
root html; ← 指定对应的站点目录为html
}
}
Nginx配置文件
user nginx nginx; #定义Nginx运行的用户和用户组
worker_processes 1; #nginx进程数,建议设置为等于CPU总核心数。
error_log /var/log/nginx/error.log info; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
pid /var/run/nginx.pid; #进程文件
worker_rlimit_nofile 1024; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以#建议与ulimit -n的值保持一致
events
{
use epoll; #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,
如果跑在FreeBS #D上面,就用kqueue模型。 worker_connections 65535; #单个进程最大连接数(最大连接数=连接数*进程数)
} http #HTTP区块开始
{
include mime.types; #Nginx支持的媒体类型库文件
default_type application/octet-stream; #默认媒体类型
#charset utf-8; #默认编码
server_names_hash_bucket_size 128; #服务器名字的hash表大小
client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64k; #设定请求缓
client_max_body_size 8m; #设定请求缓
sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为o #ff,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #连接超时,单位是秒 #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k; #gzip模块设置
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区
gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级
gzip_types text/x-javascript text/css application/xml; #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用 #虚拟主机的配置
server
{ listen 80; #监听端口 server_name localhost; #提供服务的域名主机名
location / { #第一个location区块开始
root html; #站点的根目录,相当于Nginx的安装目录
index index.html index.htm index.jsp; #默认的首页文件,多个用空格分开
} #第一个location区块结果 #图片缓存时间设置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 10d;
} #JS和CSS缓存时间设置
location ~ .*\.(js|css)?$
{
expires 1h;
} #日志格式设定
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for'; access_log /var/log/nginx/access_$(data+%F -d -1day).log access; #定义本虚拟主机的访问日志 location / { #对 "/" 启用反向代理
proxy_pass http://127.0.0.1:88;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #以下是一些反向代理的配置,可选
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传 } #设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log on;
auth_basic "NginxStatus";
auth_basic_user_file conf/htpasswd; #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。 } #本地动静分离反向代理配置
#所有jsp的页面均交由tomcat或resin处理
location ~ .(jsp|jspx|do)?$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
} #所有静态文件由nginx直接读取不经过tomcat或resin
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{ expires 15d; }
location ~ .*.(js|css)?$
{ expires 1h; }
}
}
Nginx安装,目录结构与配置文件详解的更多相关文章
- Nginx目录结构与配置文件详解
Nginx安装 具体安装nginx请移步:[nginx部署] 安装依赖 安装pcre依赖软件 [root@ubuntu ~]# yum install -y pcre pcre-devel //外网情 ...
- Tomcat的目录结构和配置文件详解
本文转载: https://www.zybuluo.com/1234567890/note/515235 参考帖子: Tomcat(一):基础配置详解 Tomcat服务器中配置多个域名,访问不同的we ...
- Linux:apache目录结构和配置文件详解
bin目录下的常见命令 conf目录 htdocs目录 logs目录 httpd.conf文件解析. 如果后期自己新创建了新的站点目录,就要重新增加对应的目录权限配置 extra/目录下配置文件解析 ...
- elasticsearch(三) 之 elasticsearch目录介绍和配置文件详解
目录 elasticsearch 配置 目录详情 (config) 配置文件 elasticsearch.yml 配置集群名称(cluster.name) 配置 network.host 更改数据和储 ...
- net core体系-web应用程序-3项目结构、配置文件详解
一.应用程序文件结构 如下图所示,相比于Asp.Net项目,在新建的Asp.Net Core项目中,没有了Global.asax以及Web.config这样的文件,但多了几个其他主要的文件,它们分别为 ...
- nginx应用场景,特性,目录结构,常用模块,内置变量,URL和URI,http状态码,配置文件详解
1.nginx介绍 1丶俄罗斯人开发的,开源www服务软件 2丶软件一共780K 3丶nginx本身是一款静态(html,js,css,jpg等)www软件 4丶静态小文件高并发,同时占用的资源很少, ...
- ubuntu nginx 安装以及配置文件详解
1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...
- 网卡配置文件详解 用户管理与文件权限篇 文件与目录权限 软连接 tar解压命令 killall命令 linux防火墙 dns解析设置 计划任务crond服务 软件包安装 阿里云 yum源 安装
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ...
- nginx安装及配置文件详解
一)nginx安装及模块讲解 1.1.nginx安装步骤 mkdir /soft wget http://nginx.org/download/nginx-1.12.0.tar.gz tar zxf ...
随机推荐
- position 的属性值
理论上来说,全部 position 的取值有8个 包括:position:static | relative | absolute | fixed | sticky | initial | inhe ...
- form中action属性后面?传递参数 获取不到
$p_id = $_REQUEST['p_id']; echo "<h1>您将更新商品编号为<span>$p_id</span>的商品信息 <a h ...
- Android 实现朋友圈有图片和视频
最近开发比较烦,这个作为我第一篇博客吧. 效果就是图上的样子. 首先是布局文件,没什么就是一个RecycleView <android.support.v7.widget.RecyclerVie ...
- iOS 谓词(NSPredicate)的应用
Cocoa中谓词(Predicate)提供了一个通用的查询方式处理数据,可以获取和指定数据的过滤形式,Cocoa实际开发中可以是使用NSPredicate及其父类NSComparisonPredica ...
- 关于如何等待一个元素的出现而不用一些笨拙粗暴的time.sleep()方法
我相信这是一个非常大众化的需求,我们需要等待某一个元素的出现以此来让我们的脚本进入到下一个Step,这个等待方法最好能够设置超时时间,然后找到后迅速callback.我们也很幸运!如果你仔细看Sele ...
- 源码安装zabbix3.2.7时PHP ldap Warning
问题如下: 解决方法: 1.首先查看源码安装的php模块中是否有ldap.so [root@nms ldap]# ll /usr/local/php/lib/php/extensions/no-de ...
- 使用ABAP代码创建S/4HANA里的Sales Order
下图是使用ABAP代码创建的S/4HANA的Sales Order的截图: 其中红色区域的值是我代码里硬编码的,而蓝色是函数SD_SALESDOCUMENT_CREATE自己创建的. 来看下代码: D ...
- MySQL 存储过程参数IN OUT INOUT区别
MySQL 存储过程参数IN OUT INOUT对比 一.IN -- 创建测试存储过程 delimiter // create procedure p_in ( IN num int ) begin ...
- ThinkPHP 更新数据 save方法
ThinkPHP save() 方法 ThinkPHP 中使用 save() 方法来更新数据库,并且也支持连贯操作的使用. 例子: public function update(){ header(& ...
- 实例:关于ALV控件可编辑的整理
使ALV控件中的内容可编辑 这应该是一个非常有用的功能,这样我们便可以用它来代替table control来编出一些有这现成功能的界面来.实际上,让alv中的内容可以被编辑与alv的事件无关.但是经常 ...