一、nginx
1.名词解释
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
2.nginx的安装和部署
所需材料:nginx-1.10.1.tar.gz nginx-sticky-module-ng.tar.gz(静态模块)
- 安装
[root@server1 ~]# tar -zxf nginx-1.10.1.tar.gz
[root@server1 ~]# cd nginx-1.10.1
[root@server1 nginx-1.10.1]# vim src/core/nginx.h
修改至如下
[root@server1 nginx-1.10.1]# vim auto/cc/gcc
加上注释,如下
对静态模块进行解包
[root@server1 ~]# tar -zxf nginx-sticky-module-ng.tar.gz
源码安装三步骤,注意,在编译检查过程中检查到需要依赖包pcre-devel openssl-devel zlib-devel
[root@server1 nginx-1.10.1]# yum install pcre-devel openssl-devel zlib-devel -y
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-sticky-module-ng/
[root@server1 nginx-1.10.1]# make
[root@server1 nginx-1.10.1]# make install
ok 安装完成
- 修改配置文件
[root@server1 nginx-1.10.1]# vim /usr/local/nginx/conf/nginx.conf
修改用户为nginx
events {
worker_connections 65535; #修改worker连接数
}
gzip on;
tcp_nopush on;
tcp_nodelay on;
如下图:
为了方便启动,我们给nginx做一个软链接
[root@server1 nginx-1.10.1]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@server1 nginx-1.10.1]# nginx #启动nginx
修改https的相关配置
- 在系统内做的修改
1.由于我们在配置文件中设置用户的身份是nginx,但是我们系统中并没有nginx这个用户,所以需要添加
[root@server1 ~]# useradd -u 800 nginx
2.由于我们在配置文件中修改了连接数,但这只是在应用程序层面的修改,我们需要对系统层面上的进行修改
[root@server1 ~]# vim /etc/security/limits.conf
nginx - nofile 65535 #在配置文件的末尾添加
以nginx用户身份验证
[root@server1 ~]# su - nginx
3.由于我们在配置文件中做了https的相关配置,所以我们需要制作一个证书,使https生效
[root@server1 ~]# cd /etc/pki/tls/certs
[root@server1 certs]# make cert.pem
[root@server1 certs]# mv cert.pem /usr/local/nginx/conf/ #必须移至改目录下
[root@server1 certs]# nginx -s reload #重新加载,使其生效
配置证书举例:
在浏览器上获取证书
ok~ 至此nginx的安装和配置已经结束
3.nginx的应用
- 测试一下我们在编译的时候添加的测试模块
更改配置文件
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
#在http语句块中添加以下内容
location /status {
stub_status on;
access_log off;
allow 172.25.70.250;
deny all;
}
[root@server1 ~]# nginx -s reload #重新加载使其生效
在浏览器上显示状态信息
- 作为http服务器
#修改配置文件
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
#在配置文件末尾添加以下内容
server{
listen 80; #设置侦听端口
server_name www.server1.com; #设置访问的域名
location /{
root /www1; #设置默认发布目录
index index.html; #设置在默认发布目录的默认发布文件名称
}
}
编辑默认发布目录下的默认发布文件
[root@server1 ~]# mkdir /www1
[root@server1 ~]# vim /www1/index.html
<h1>nginx http server</h1>
重启服务,使其生效
[root@server1 ~]# nginx -s reload
在服务器上添加域名解析
[root@server1 ~]# vim /etc/hosts
172.25.70.1 www.server1.com
测试
[root@server1 ~]# curl www.server1.com #成功访问
<h1>nginx http server</h1>
- 做反向代理服务器
#修改配置文件
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
#在http语句块中添加,配置负载均衡池nginx
upstream nginx{
server 172.25.70.2:80; #指定后端的服务器,以及侦探端口
server 172.25.70.3:8080; #由于nginx属于七层应用,支持端口的转发,所以这里nginx的侦听端口是80,后端的apache服务的侦听端口可以不是80(以8080为例)
}
#在https server的末端添加
server{
listen 80;
server_name www.nginx.com;
location /{
proxy_pass http://nginx; #将所有请求转发给nginx池的应用处理
}
}
[root@server1 ~]# nginx -s reload #使修改的配置文件生效
Nginx 端口转发实现原理是:用 Nginx 监听 80 端口,当有 HTTP 请求到来时,将 HTTP 请求的 HOST 等信息与其配置文件进行匹配并转发给对应的应用。
对ip为172.25.70.2的server2和ip为172.25.70.3的server3做的配置
#修改server3的httpd服务侦听端口
[root@server3 ~]# vim /etc/httpd/conf/httpd.conf
Listen 8080;
#为server2和server3编辑默apache默认发布文件
[root@server2 ~]# vim /var/www/html/index.html
<h1>the page from server2</h1>
[root@server3 ~]# vim /var/www/html/index.html
<h1>the page from server3</h1>
#启动server2和server3的httpd服务
/etc/init.d/httpd start
为测试机(本例是server1)添加域名解析
[root@server1 ~]# vim /etc/hosts
172.25.70.1 www.nginx.com
测试
[root@server1 ~]# curl www.nginx.com
<h1>the page from server2</h1>
[root@server1 ~]# curl www.nginx.com
<h1>the page from server3</h1>
端口转发成功,实现负载均衡。