源码编译安装Nginx服务

准备工作

1:下载源码包:nginx-1.14.0.tar.gz
2:解压源码包:
tar zxf nginx-1.14.0.tar.gz
3:cd nginx-1.14.0/src/core
在这里插入图片描述
4.vim nginx.h
为了在部署好nginx服务器后,不让客户端访问的时候知道我们nginx服务的版本,我们对此文件做以下更改
修改14行为: #define NGINX_VER “nginx”
在这里插入图片描述
5:cd /root/nginx-1.14.0/auto/cc
6:vim gcc
注释掉172行
在这里插入图片描述
7:安装相关依赖性,如果不安装,在下一步源码编译的时候会报错
yum install gcc openssl-devel pcre-devel -y

源码编译

源码编译三部曲:
(1):./configure #可使用./configure --help查看相关参数用法
(2):make #开始编译
(3):make install #安装
1:cd /root/nginx-1.14.0
2:指定要按装的目录和要安装的功能
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio
在这里插入图片描述
3:make
在这里插入图片描述
4:make install
在这里插入图片描述
此时源码编译步骤完成

启用Nginx服务

1:制作软链接
ln -s /usr/local/nginx/sbin/nginx /sbin/ # 执行这条命令后,就可以用执行nginx直接开启服务,相当于将nginx直接添加为系统命令
2:nginx -t ##检测语法错误
nginx 开启服务
nginx -s stop 关闭服务
nginx -s reload 重启服务 #必须在nginx服务开启状态下执行重新加载
在这里插入图片描述
3:检测,到客户端使用curl 172.25.66.1 -I
在这里插入图片描述
4:nginx默认发布目录在/usr/local/nginx/html
默认发布文件:index.html

配置nginx虚拟主机实现负载均衡

1:cd /usr/local/nginx/conf/
vim nginx.conf
修改/添加以下内容:

  2 user  nginx nginx;
  3 worker_processes  1;
  4 worker_cpu_affinity 01;
  13 events {
  14     worker_connections  65535;
  15 }
  18 http {
  19         upstream westos {
  20         #ip_hash;   #哈希算法:一但检测到ip,不改变后端服务器
  21         server 172.25.6.2:80;
  22         server 172.25.6.3:80;
  23         #server 127.0.0.1 backup; ##当2和3服务全部关掉后, 默认访问本机
  24         }
  124         server {
  125                 listen 80;
  126                 server_name www.westos.org;
  127
  128                 location / {
  129                 proxy_pass http://westos;
  130                 }
  131         }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2:useradd -M -d /usr/local/nginx/ nginx # 指定用户家目录创建用户
3:nginx -t 检测有没有语法错误,如果有检查文件是否有错误
4:nginx -s reload
在这里插入图片描述
5:vim /etc/security/limits.conf
在最后写入:
nginx - nofile 65536
在这里插入图片描述
6:打开设置成虚拟主机的两台主机的http服务
7:在客户端:
curl www.westos.org
在这里插入图片描述

添加模块(sticky)

nginx会话保持之nginx-sticky-module模块

Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route
1.客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
2.后端服务器处理完请求,将响应数据返回给nginx。
3.此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
4.客户端接收请求,并保存带route的cookie。
5.当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。
注意:cookie需要浏览器支持,且有时候会泄露数据

添加sticky模块

1:需要下载nginx的旧版本,这里用10版本
nginx-1.10.1.tar.gz
2:再下载模块
nginx-sticky-module-ng.tar.gz
3:停用之前的nginx,必须停用,否则会冲突
nginx -s stop
在这里插入图片描述
4:解压新下载的两个包
在这里插入图片描述
5:重新进行源码编译
cd nginx-1.10.1
(1):指定安装目录,注意不要和之前安装的nginx在一个目录,否则之前的nginx将会被完全覆盖,添加sticky模块
./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
在这里插入图片描述
(2):make && make install #用&&将两步直接连续执行
在这里插入图片描述
6:cd /opt/nginx/conf/
7:cp /usr/local/nginx/conf/nginx.conf nginx.conf
将之前安装的nginx的配置文件复制过来
在这里插入图片描述
8:vim /opt/nginx/conf/nginx.conf
21行写入:
sticky;
在这里插入图片描述
9:检测语法错误
/opt/nginx/sbin/nginx -t #必须用绝对路径,否则会跟之前的版本冲突
/opt/nginx/sbin/nginx ##打开服务
在这里插入图片描述
10:在浏览器中测试,因为有sticky算法,所以不会发生轮询,因为nginx服务器会生成带route的cookie返回给客户端,所以当客户端再一次发出请求时,会带上route,nginx服务器会根据route的值,将请求转发给上次客户端请求时,返回数据的后端服务器
在这里插入图片描述
可以在浏览器中查看cookies
按F12,然后在底部出现的框中点击右上方的设置按钮,添加storage选项
在这里插入图片描述
添加完成后,点击storage就可以看到获取到的cookies
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/84309083