CentOS7安装Nginx及配置
Nginx是⼀款轻量级的⽹页服务器、反向代理服务器。相较于Apache、lighttpd具有占有内存少,稳定性⾼等优势。**它最常的⽤途是提供反向代理服务。**
安装
1.
在Centos下,yum源不提供nginx的安装,可以通过切换yum源的⽅法获取安装。也可以通过直接下载安装包的⽅法,**以下命令均需root权限执⾏**:
2.
⾸先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库)。选定**/usr/local**为安装⽬录,以下具体版本号根据实际改变。
1.安装gcc gcc-c++(如新环境,未安装请先安装)
1.
$ yum install -y gcc gcc-c++
2.
2.安装PCRE库
1.
$ cd /usr/local/
2.
$ wget jaist.dl.sourceforge/project/pcre/pcre/8.33/pcre-8.
3.
$ tar -zxvf pcre-8.
4.
$ cd pcre-8.36
5.
$ ./configure
6.
$ make && make install
7.
8.
如报错:configure: error: You need a C++ compiler for C++ support
9.
解决:yum install -y gcc gcc-c++
10.
3.安装SSL库
1.
$ cd /usr/local/
2.
$ wget /source/openssl-1.0.
3.
$ tar -zxvf openssl-1.0.
4.
$ cd openssl-1.0.1j
5.
$ ./config
6.
$ make && make install
7.
8.
4.安装zlib库存
4.安装nginx
1.
$ wget /download/nginx-1.8.
3.
$ tar -zxvf nginx-1.8.
4.
$ cd nginx-1.8.0
5.
$ ./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module
6.
(注: --with-http_ssl_module:这个不加后⾯在f配置ssl:on后,启动会报nginx: [emerg] unknown directive "ssl" in /opt/nginx/f 异常)
7.
$ make && make install
8.
时提⽰以下错误:
./configure: error: SSL modules require the OpenSSL library.
⽀持此命令:
yum -y install openssl openssl-devel
9.
报错:./configure: error: the HTTP gzip module requires the zlib library
10.
在–prefix后⾯接以下命令:
1.
--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源码路径。--with-zlib=/usr/local/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。
2.
5.启动
$ /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
强制关闭:
1.
$ pkill nginx
2.
配置
以上安装⽅法nginx的配置⽂件位于
/usr/local/nginx/f
Nginx配置⽂件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内,也就是说内层块会⾃动获取外层块的值作为缺省值。
Server
不同的服务配置隔离。
server {
listen 80;
server_name localhost;
root html;
index index.html index.htm;
}
例如我们笔⼽玩下的两个⼦项⽬ passport 和 wan 就可以通过在 nginx 的配置⽂件中配置两个 server,servername 分别为
passport.bigertech 和 wan.bigertech。这样的话不同的 url 请求就会对应到 nginx 相应的设置,转发到不同的后端服务器上。
这⾥的 listen 指监听端⼝,server_name ⽤来指定IP或域名,多个域名对应统⼀规则可以空格分开,index ⽤于设定访问的默认⾸页地址,root 指令⽤于指定虚拟主机的⽹页跟⽬录,这个地⽅可以是相对地址也可以是绝对地址。
通常情况下我们可以在 f 中配置多个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个时,建议将不同对虚拟主机的配置放在另⼀个⽂件中,然后通过在主配置⽂件 f 加上 include 指令包含进来。更便于管理。
include vhosts/*.conf;
就可以把vhosts的⽂件都包含进去啦。
Localtion
每个 url 请求都会对应的⼀个服务,nginx 进⾏处理转发或者是本地的⼀个⽂件路径,或者是其他服务器的⼀个服务路径。⽽这个路径的匹配是通过 location 来进⾏的。我们可以将 server 当做对应⼀个域名进⾏的配置,⽽ location 是在⼀个域名下对更精细的路径进⾏配置。
以上⾯的例⼦,可以将root和index指令放到⼀个location中,那么只有在匹配到这个location时才会访问root后的内容:
location / {
1.
root /data/www/host2;
2.
index index.html index.htm;
}
location 匹配规则
~ 波浪线表⽰执⾏⼀个正则匹配,区分⼤⼩写
~* 表⽰执⾏⼀个正则匹配,不区分⼤⼩写
^~ ^~表⽰普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,⼀般⽤来匹配⽬录
= 进⾏普通字符精确匹配
匹配例⼦:
location = / {
# 只匹配"/". [ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以"/"开始 # 但是更长字符匹配或者正则表达式匹配会优先匹配 [ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停⽌匹配其它
location [ configuration C ]
}
# 匹配以 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/;
}
root
root后跟的指定⽬录是上级⽬录,并且该上级⽬录下要含有和location后指定名称的同名⽬录才⾏。
location /c/ {
root /a/;
}
如果你需要将这个⽬录展开,在这个location的末尾加上「autoindex on; 」就可以了
转发
配置起来很简单⽐如我要将所有的请求到转移到真正提供服务的⼀台机器的 8001 端⼝,只要这样:
location / {
proxy_pass 172.16.1.1:8001;
}
这样访问host时,就都被转发到 172.16.1.1的8001端⼝去了。
负载均衡
我们在 upstream 中指定了⼀组机器,并将这个组命名为 myserver,这样在 proxypass 中只要将请求转移到 myserver 这个 upstream 中我们就实现了在四台机器的反向代理加负载均衡。其中的 ip_hash 指明了我们均衡的⽅式是按照⽤户的 ip 地址进⾏分配。另外还有轮询、指定权重轮询、fair、url_hash⼏种调度算法。
总结
以上是最简单的通过 nginx 实现静态⽂件转发、反向代理和负载均衡的配置。在 nginx 中所有的功能都是通过模块来实现的,⽐如当我们配置 upstream 时是⽤ upstream 模块,⽽ server 和 location 是在 http core 模块,其他的还有流控的 limt 模块,邮件的 mail 模块,https 的 ssl 模块。他们的配置都是类似的可以再 nginx 的中到详细的配置说明。
*********************************************************************************
安装所需环境
Nginx 是 C语⾔开发,建议在 Linux 上运⾏,当然,也可以安装 Windows 版本,本篇则使⽤ 7 作为安装环境。
⼀. gcc 安装
安装 nginx 需要先将官⽹下载的源码进⾏编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum install gcc-c++
⼆. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是⼀个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使⽤ pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使⽤ pcre 开发的⼀个⼆次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
zlib 库提供了很多种压缩和解压缩的⽅式, nginx 使⽤ zlib 对 http 包的内容进⾏ gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
四. OpenSSL 安装
OpenSSL 是⼀个强⼤的安全套接字层密码库,囊括主要的密码算法、常⽤的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应⽤程序供测试或其它⽬的使⽤。
nginx 不仅⽀持 http 协议,还⽀持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
yum install -y openssl openssl-devel
nginx和apache区别官⽹下载
2.使⽤wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执⾏ yum install wget 安装。
wget -c /download/nginx-1.12.
我下载的是1.12.0版本,这个是⽬前的稳定版。
解压
依然是直接命令:
tar -zxvf nginx-1.12.
cd nginx-1.12.0
配置
其实在 nginx-1.12.0 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要⾃⼰配置⽬录也是可以的。
1.使⽤默认配置
./configure
2.⾃定义配置(不推荐)
./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/f \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注:将临时⽂件⽬录指定为/var/temp/nginx,需要在/var下创建temp及nginx⽬录
编译安装
make
make install
查安装路径:
whereis nginx
启动、停⽌nginx
cd /usr/local/nginx/sbin/
./nginx
./nginx -s stop
./nginx -s quit
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论