网上找了好多资料。都很难找全,这里以这个目录为主,进行备注。

Nginx是一款轻量级的网页服务器、反向代理服务器。相较于Apache、lighttpd具有占有内存少,稳定性高等优势。它最常的用途是提供反向代理服务。

安装


在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装。也可以通过直接下载安装包的方法,以下命令均需root权限执行

首先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库)。选定/usr/local为安装目录,以下具体版本号根据实际改变。

配置yum后更新缓存
yum clean all && yum makecache

安装依赖包
yum groupinstall "Development Tools" "Server Platform Development"
yum install gcc openssl-devel pcre-devel zlib-devel gcc-c++

同步时间
ntpdate 202.120.2.101

创建nginx用户
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx

创建文件夹做引导-------部署后的根目录
mkdir -pv /usr/local/nginx/

 

安装nginx

$ cd /usr/local/
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
$ tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0
$ ./configure --prefix=/usr/local/nginx

$ make      #这里经常出现这样的提示  make[1]:leaving directory  '/usr/local/nginx-1.8.0
#不用理睬 就可以
$ make install

# 在--prefix后面接以下命令:

================================================================================================================================
--prefix=/usr/local/nginx ==>安装部署后的根目录,默认为/usr/local/nginx
--conf-path=/etc/nginx/nginx/nginx.conf ==>配置文件的放置路径,默认<prefix>/conf/nginx.conf
--user=nginx ==>指定worker进程运行时所属的用户
--group=nginx ==>指定worker进程运行是所属的组
--error-log-path=/var/log/nginx/errpr.log ==>error日志放置位置
--http-log-path=/var/log/nginx/access.log ==>access日志放置的位置
--pid-path=/var/run/nginx/nginx.pid ==>pid文件的存放路径;默认<prefix>/logs/nginx.pid
--lock-path=/var/lock/nginx.lock ==>lock文件的放置路径;默认<prefix>/logs/nginx.lock

--with-http_ssl_module ==>提供HTTPS服务;该模块的安装依赖于OpenSSL开源软件
--with-http_stub_status_module ==>能够获取Nginx自上次启动以来的工作状态
--with-http_gzip_static_module ==> 如果采用gzip 模块把一些文档进行gzip 格式压缩后再返回给客户端,那么对同一个文件每次都会重新压缩,这是比较消耗服务器CPU 资源的. gzip static 模块可以在做gzip 压缩前,先查看相同位置是否有已经做过gzip 压缩的.gz 文件,如果有,就直接返回。这样就可以预先在服务器上做好文档的压缩,给CPU 减负
--wiht-http_flv_modle ==>可以在向客户端返回响应肘,对FLV 格式的视频文件在header 头做一些处理,使得客户端可以观看、拖动FLV 视频
--with-http_mp4_module ==>使客户端可以观看、拖动MP4 视频
--http-client-body-temp-path=/var/tmp/nginx/client ==>set path to store http client request body temporary files
--http-proxy-temp-path=/var/tmp/nginx/proxy ==>Nginx 作为HTTP 反向代理服务器时,上游服务器产生的HTTP 包体在需要临时存放到磁盘文件时,这样的临时文件将放到该路径下;默认<prefix>/proxy _temp
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi ==>Fastcgi 所使用临时文件的放置目;默认<prefix>/fastcgi_temp
================================================================================================================================

关闭iptables
service iptables stop
chkconfig iptables stop

关闭selinux
setenforce 0
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled

 

启动

$ /usr/local/nginx/sbin/nginx

检查是否启动成功:

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

部分命令如下:

重启:
$ /usr/local/nginx/sbin/nginx –s reload

停止:
$ /usr/local/nginx/sbin/nginx –s stop

测试配置文件是否正常:
$ /usr/local/nginx/sbin/nginx –t

强制关闭:
$ pkill nginx

 

配置


以上安装方法nginx的配置文件位于

/usr/local/nginx/conf/nginx.conf

Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,

缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。

Server

接收请求的服务器需要将不同的请求按规则转发到不同的后端服务器上,

在 nginx 中我们可以通过构建虚拟主机(server)的概念来将这些不同的服务配置隔离。

server {
listen 80;
server_name localhost;
root html;
index index.html index.htm;
}

例如我们笔戈玩下的两个子项目 passport 和 wan 就可以通过在 nginx 的配置文件中

配置两个 server,servername 分别为 passport.bigertech.com 和 wan.bigertech.com。

这样的话不同的 url 请求就会对应到 nginx 相应的设置,转发到不同的后端服务器上。

这里的 listen 指监听端口,server_name 用来指定IP或域名,多个域名对应统一规则可以空格分开,

index 用于设定访问的默认首页地址,root 指令用于指定虚拟主机的网页跟目录,

这个地方可以是相对地址也可以是绝对地址。

通常情况下我们可以在 nginx.conf 中配置多个server,对不同的请求进行设置。就像这样:

server {
listen 80;
server_name host1;
root html;
index index.html index.htm;
}
server {
listen 80;
server_name host2;
root /data/www/html;
index index.html index.htm;
}

但是当 server 超过2个时,建议将不同对虚拟主机的配置放在另一个文件中,

然后通过在主配置文件 nginx.conf 加上 include 指令包含进来。更便于管理。

include vhosts/*.conf;

就可以把vhosts的文件都包含进去啦。

Localtion

每个 url 请求都会对应的一个服务,nginx 进行处理转发或者是本地的一个文件路径,

或者是其他服务器的一个服务路径。而这个路径的匹配是通过 location 来进行的。

我们可以将 server 当做对应一个域名进行的配置,而 location 是在一个域名下对更精细的路径进行配置。

以上面的例子,可以将root和index指令放到一个location中,那么只有在匹配到这个location时才会访问root后的内容:

    location / {
root /data/www/host2;
index index.html index.htm;
}

location 匹配规则

~      波浪线表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= 进行普通字符精确匹配

匹配例子:

location  = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以"/"开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
[ configuration D ]
} 请求:
/ -> 符合configuration A
/documents/document.html -> 符合configuration B
/images/1.gif -> 符合configuration C
/documents/1.jpg ->符合 configuration D

静态文件映射

访问文件的配置主要有 root 和 aliasp's 两个指令。这两个指令的区别容易弄混:

alias

alias后跟的指定目录是准确的,并且末尾必须加 /。

    location /c/ {
alias /a/;
}

如果访问站点http://location/c访问的就是/a/目录下的站点信息。

root

root后跟的指定目录是上级目录,并且该上级目录下要含有和location后指定名称的同名目录才行。

    location /c/ {
root /a/;
}

这时访问站点http://location/c访问的就是/a/c目录下的站点信息。

如果你需要将这个目录展开,在这个location的末尾加上「autoindex on; 」就可以了

转发

配置起来很简单比如我要将所有的请求到转移到真正提供服务的一台机器的 8001 端口,只要这样:

location / {
proxy_pass 172.16.1.1:8001;
}

这样访问host时,就都被转发到 172.16.1.1的8001端口去了。

负载均衡

upstream myserver; {
ip_hash;
server 172.16.1.1:8001;
server 172.16.1.2:8002;
server 172.16.1.3;
server 172.16.1.4;
}
location / {
proxy_pass http://myserver;
}

我们在 upstream 中指定了一组机器,并将这个组命名为 myserver,

这样在 proxypass 中只要将请求转移到 myserver 这个 upstream 中我们就实现了在四台机器的反向代理加负载均衡。

其中的 ip_hash 指明了我们均衡的方式是按照用户的 ip 地址进行分配。另外还有轮询、指定权重轮询、fair、url_hash几种调度算法。

总结


以上是最简单的通过 nginx 实现静态文件转发、反向代理和负载均衡的配置。在 nginx 中所有的功能都是通过模块来实现的,

比如当我们配置 upstream 时是用 upstream 模块,而 server 和 location 是在 http core 模块,其他的还有流控的 limt 模块,

邮件的 mail 模块,https 的 ssl 模块。他们的配置都是类似的可以再 nginx 的模块文档中找到详细的配置说明。

Centos下 Nginx安装与配置的更多相关文章

  1. centos下Nginx安装和配置多个域名的虚拟主机

    nginx安装步骤,源码编译安装(源码编译,可以自定制更多功能) openssl #user nobody; worker_processes ; #error_log logs/error.log; ...

  2. centos下nginx安装和配置

    注:此文是根据前辈的博客和自己实际动手总结出来的,不喜勿喷 1.准备工作 Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,注意安装顺序如下: 1 SSL功能需要 ...

  3. centos下nginx安装与配置

    nginx依赖以下模块: l  gzip模块需要 zlib 库 l  rewrite模块需要 pcre 库 l  ssl 功能需要openssl库 tar xzvf nginx-1.9.15.tar. ...

  4. CentOS 下 redis 安装与配置

    CentOS 下 redis 安装与配置   1.到官网上找到合适版本下载解压安装 [root@java src]# wget -c http://redis.googlecode.com/files ...

  5. centos7系统下nginx安装并配置开机自启动操作

    准备工作 我的centos7系统是最小化安装的, 缺很多库, 首先安装必须的运行库 ? 1 2 3 4 5 6 7 8 9 10 11 yum install wget gcc gcc-c++ pcr ...

  6. nginx在CentOs下的安装及配置

    前言: 先介绍一下nginx: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.其特点是占有内存少,并发能力强, ...

  7. windows下nginx安装、配置与使用(转载)

    目前国内各大门户网站已经部署了Nginx,如新浪.网易.腾讯等:国内几个重要的视频分享网站也部署了Nginx,如六房间.酷6等.新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx ...

  8. windows下nginx安装、配置与使用

    目前国内各大门户网站已经部署了Nginx,如新浪.网易.腾讯等:国内几个重要的视频分享网站也部署了Nginx,如六房间.酷6等.新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx ...

  9. CentOS下nginx+php的配置及nginx开机启动配置

    关闭防火墙 (不然外链接是访问不了 apache) service iptables stop 关闭安全系统 SELinux( 不然报403 访问页面错误 ) 1.Nginx安装主要在于配置文件的修改 ...

随机推荐

  1. 基于jdk调用天气服务案例及问题

    问题1:解析wsdl文件时出现 把网络上的wsdl保存到本地,把圈起来的那段删掉 代码: 当返回结果不是String类型时: 输入城市编码去查找 所以: 问题二:如果把本地wsdl文件删除的话需要 三 ...

  2. javascript 日期对象

    1.日期对象定义 var Udate=new Date();//获得当前日期 2.Date对象中处理时间和日期的常用方法: 3.返回/设置年份 var mydate=new Date();//当前时间 ...

  3. Linux下Crontab的格式及含义

    crontab的基本格式: f1 f2 f3 f4 f5 command 分 时     日 月 周 命令 第一列f1代表分钟1~59:当f1为*表示每分钟都要执行:为*/n表示每n分钟执行一次:为a ...

  4. linux 安装mysql数据库

    Ubuntu上安装MySQL非常简单,只需要打开终端,几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql- ...

  5. 淘淘商城_day06_课堂笔记

    今日大纲 实现单点登录系统 基于单点登录系统实现,用户的注册和登录 商品数据同步问题 问题 后台系统中将商品修改,前台系统没有进行数据的同步,导致前端系统不能够实时显示最新的数据. 解决 后台系统中商 ...

  6. Django 过滤器

    过滤器 描述 示例 upper 以大写方式输出 {{ user.name | upper }} add 给value加上一个数值 {{ user.age | add:"5" }} ...

  7. 《JS中的面向对象技术》

    内容要点: 1.什么是对象:JS权威指南学习总结-第六章 ,(有句话:一切都是对象) 2.什么面向对象 使用对象时,只关注对象提供的功能,不关注其内部细节,比如jQuery.面向对象是一种通用思想,并 ...

  8. shell脚本学习(四)

    1.文件权限 1.1 用户有一个称为setuid(S)的特殊权限,它出现在执行权限(x)的位置,setuid权限允许用户以拥有者的权限来执行可执行文件,即使这个可执行文件是由 其他用户运行的. 具有s ...

  9. 第一题 (Map)利用Map,完成下面的功能:

    从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯.  附:世界杯冠军以及对应的夺冠年份,请参考本章附录. 附录  1.历届世界杯冠 ...

  10. Python字符串连接方式

    python中有很多字符串连接方式,总结一下: 1 最原始的字符串连接方式:str1 + str22 python 新字符串连接语法:str1, str23 奇怪的字符串方式:str1 str24 % ...