一、nginx配置文件语法高亮显示
首先安装nginx,在官网下载nginx安装包,解压
[root@server1 ~]# tar zxf nginx-1.14.2.tar.gz
安装nginx编译需要的依赖
[root@server1 ~]# yum install -y gcc pcre-devel zlib-devel
隐藏版本号,关闭debug日志
编译安装
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx
[root@server1 nginx-1.14.2]# make
[root@server1 nginx-1.14.2]# cd objs/
[root@server1 objs]# ls
autoconf.err nginx ngx_auto_config.h ngx_modules.c src
Makefile nginx.8 ngx_auto_headers.h ngx_modules.o
[root@server1 objs]# ll nginx
-rwxr-xr-x 1 root root 803880 Feb 21 14:16 nginx
[root@server1 objs]# cd ..
[root@server1 nginx-1.14.2]# make install
启动nginx并查看
配置
查看nginx的配置文件 高量显示
二、nginx的热部署(平滑部署)
在不停止服务的情况下进行升级
首先解压要升级的安装包
[root@server1 ~]# tar zxf nginx-1.15.8.tar.gz
隐藏版本号,关闭debug日志
[root@server1 ~]# cd nginx-1.15.8
[root@server1 nginx-1.15.8]# vim auto/cc/gcc ##关闭debug
源码编译(这里注意编译时的参数和上个版本编译时的参数要保持一致,否则升级时不匹配)
[root@server1 nginx-1.15.8]# ./configure --prefix=/usr/local/nginx ##编译的参数和上个版本的参数必须相同
这里编译完成后 进行安装时只执行make 因为升级时只需要新版被编译安装的nginx二进制程序。
[root@server1 nginx-1.15.8]# make ##make完之后不能进行make install
备份旧版本的二进制文件,以免新版本的nginx出错后无法还原旧版本
将新版本的二进制文件覆盖旧版本的二进制文件,告诉旧服务不要再接收新的用户请求(下线),新服务启动子进程接收用户请求(上线)
旧服务关闭子进程,查看服务版本
当新版本故障,退回原来的服务
首先将旧版本的二进制程序恢复
执行命令[root@server1 sbin]# kill -HUP 3591 拉起旧的服务(重载)
告诉旧服务不要再接收新的用户请求(下线),新服务启动子进程接收用户请求(上线),旧服务关闭子进程,查看服务版本
恢复成功。。。
三、编写systemd的nginx的启动脚本
首先安装httpd
[root@server1 ~]# cd /usr/lib/systemd/system
[root@server1 system]# yum install -y httpd
查看httpd的启动脚本
cp httpd.service /etc/systemd/system/nginx.service 拷贝,编写nginx的启动脚本,完成后刷新策略
查看nginx的systemd没有起来
因为之前的nginx是开启的并且有进程,所以要杀死之前nginx的进程并重新加载启动。
重新加载,用systemd脚本启动,并查看nginx开启
四、nginx截取ip
对nginx做软链接,方便后期运用命令。
[root@server1 sbin]# ln -s /usr/local/nginx/sbin/nginx /sbin/ 做软连接
查看nginx的版本,因为要截取ip,需要--with-http_realip_module模块,因此要重新编译,安装。
[root@server1 ~]# nginx -v
nginx version: nginx/1.14.2
[root@server1 ~]# cd nginx-1.14.2
[root@server1 nginx-1.14.2]# make clean
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx/ --with-http_realip_module 重新编译
[root@server1 nginx-1.14.2]# make
拷贝新的二进制文件,覆盖原来的二进制文件。
编辑配置文件
[root@server1 ~]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf 在文件最后写入该模块
server {
listen 80;
server_name server1.westos.org;
location / {
return 200 "client real ip: $remote_addr\n";返回一个ip,将该ip取出
}
}
[root@server1 conf]# nginx -s reload 重新加载配置
测试:
测试前先给本机做解析。
再次编辑配置文件
[root@server1 conf]# vim nginx.conf
server {
listen 80;
server_name server1.westos.org;
set_real_ip_from 172.25.254.1; nginx的上层ip(真实ip)
real_ip_header X-Forwarded-For; 该参数会一直累加ip
real_ip_recursive off; 默认为off取ip的最后一个
location / {
return 200 "client real ip: $remote_addr\n";
}
}
[root@server1 conf]# nginx -s reload
测试:
再次编辑配置文件,将off改为on
[root@server1 conf]# vim nginx.conf
server {
listen 80;
server_name server1.westos.org;
set_real_ip_from 172.25.254.1;
real_ip_header X-Forwarded-For;
real_ip_recursive on; 当为on时,取ip最后一个的前一个
location / {
return 200 "client real ip: $remote_addr\n";
}
}
[root@server1 conf]# nginx -s reload
测试:
五、nginx的反向代理实现查看真实物理机ip
打开两台虚拟机,server1做后端来发现真实物理机ip,server2做nginx的反向代理
配置server1
首先将server1编译安装好的nginx发送给server2主机
[root@server1 ~]# cd /usr/local/
[root@server1 local]# scp -r nginx root@172.25.254.2:/usr/local/
编辑server1的配置文件(注释之前写入的)
[root@server1 conf]# vim nginx.conf
[root@server1 conf]# nginx -s reload 加载配置
编辑server1的发布目录
[root@server1 nginx]# cd html/
[root@server1 html]# ls
50x.html index.html
[root@server1 html]# vim test.html
test
[root@server1 html]# ls
50x.html index.html test.html
配置server2
编辑配置文件
[root@server2 conf]# vim nginx.conf
upstream westos { 在http模块下写
server 172.25.254.1:80;
}
server {
listen 80;
server_name www.westos.org;
location / {
proxy_pass http://westos;
#proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[root@server2 ~]# /usr/local/nginx/sbin/nginx
[root@server2 ~]# /usr/local/nginx/sbin/nginx -s reload
测试:真机写入解析,测试
测试后在后端server1查看日志
发现真实物理机的ip
六、nginx图片缩小模块
首先需要重新编译,添加图片缩小的模块
[root@server1 nginx-1.14.2]# make clean 清除上次编译的数据
[root@server1 ~]# ls 导入gd包,该包是图片缩小模块的依赖
gd-devel-2.0.35-26.el7.x86_64.rpm nginx-1.14.2.tar.gz nginx-1.15.8.tar.gz
nginx-1.14.2 nginx-1.15.8
[root@server1 ~]# yum install -y gd-devel-2.0.35-26.el7.x86_64.rpm
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx/ --with-http_realip_module --with-http_image_filter_module=dynamic 编译
[root@server1 nginx-1.14.2]# make 安装
配置server1
查看进程,关闭nginx
[root@server1 nginx-1.14.2]# ps ax 查看进程,当nginx进程运行时,关闭nginx
[root@server1 nginx-1.14.2]# nginx -s stop
将新编译的nginx二进制文件拷贝到nginx的启动目录下,并将图片缩小模块移动到/usr/local/nginx/modules/在配置文件里写入,方可生效
[root@server1 nginx-1.14.2]# cd objs/
[root@server1 objs]# cp nginx /usr/local/nginx/sbin/
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
[root@server1 objs]# mkdir /usr/local/nginx/modules
[root@server1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules/
编辑配置文件
[root@server1 objs]# cd /usr/local/nginx/conf/
[root@server1 conf]# vim nginx.conf
写入图片缩小模块
编辑默认发布目录,在download目录里导入图片
[root@server1 conf]# cd ../html/
[root@server1 html]# ls
50x.html index.html test.html
[root@server1 html]# mkdir download
[root@server1 html]# ls
50x.html download index.html test.html
[root@server1 html]# cd download/
[root@server1 download]# ls
vim.jpg
该图片从真实物理机导入
nginx -t 测试
[root@server1 modules]# nginx -t
nginx: the configuration file /usr/local/nginx//conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx//conf/nginx.conf test is successful
启动nginx
[root@server1 modules]# nginx
[root@server1 modules]# nginx -s reload
在浏览器测试
输入:172.25.254.1/download/vim.jpg,出现图片,缩小版。
七、nginx的重定向
编写配置
[root@server1 conf]# vim /etc/hosts 写入解析
www.westos.org
[root@server1 conf]# ping www.westos.org
[root@server1 conf]# mkdir /web
[root@server1 conf]# cd /web/
[root@server1 web]# ls
[root@server1 web]# vim index.html
www.westos.org
编辑配置文件
[root@server1 conf]# vim nginx.conf
# HTTPS server
#
server {
listen 443 ssl;
server_name www.westos.org;
ssl_certificate cert.pem; 认证
ssl_certificate_key cert.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /web;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.westos.org;
location / {
root /web;
index index.html;
}
}
}
重新编译安装
[root@server1 nginx-1.14.2]# make clean
[root@server1 nginx-1.14.2]# yum install -y openssl-devel
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx/ --with-http_realip_module --with-http_image_filter_module=dynamic --with-http_ssl_module
[root@server1 nginx-1.14.2]# make
查看进程,杀死nginx在运行的所有进程
将新编译的nginx二进制文件拷贝到nginx的启动目录下并拷贝ngx_http_image_filter_module.so
[root@server1 objs]# cp nginx /usr/local/nginx/sbin/
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
[root@server1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules/
cp: overwrite ‘/usr/local/nginx/modules/ngx_http_image_filter_module.so’? y
启动nginx,出现认证错误,自己添加认证
将证书拷贝到/usr/local/nginx/conf/
[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/
开启nginx,并查看端口
浏览器输入www.westos.org
真实物理机测试
编辑配置文件,使其重定向到302
[root@server1 conf]# vim nginx.conf
当访问www.westos.org的时候跳转到https://www.westos.org
重启动服务测试