1 环境配置(虚拟环境)
1.1 配置静态ip
# 虚拟机启动centos后,修改配置静态IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改配置
BOOTPROTO="static" # dhcp修改为static
# 增加配置如下
IPADDR=192.168.126.139
NETMASK=255.255.255.0
GATEWAY=192.168.126.1
DNS1=8.8.8.8
# 重启网络服务
systemctl restart network
1.2 虚拟机上网
# ping www.baidu.com ping不通无法上网
# 查看虚拟机网关设置
点击虚拟机 workstation --> 编辑 --> 虚拟网络编辑器 --> 更改配置(授予更高的权限) --> 选择VMnet8 NAT模式 --> 点击NAT设置 --> 查看网关ip --> 修改1.1中网关配置 --> 重启网络服务
GATEWAY=192.168.126.2
2 Nginx安装
2.1 安装包下载
# 下载安装包
http://nginx.org/download/
# 选择 nginx-1.21.6.tar.gz
# 解压
tar -zxvf nginx-1.21.6.tar.gz
2.2 安装及依赖
# c编译器gcc,查看版本
gcc -v
# 如果没有,则需要安装
yum install -y gcc
# 安装nginx
cd nginx-1.21.6
./configure --prefix=/usr/local/nginx # 安装到/usr/local/nginx
# 缺少PCRE library
yum install -y pcre pcre-devel
# 缺少zlib library
yum install -y zlib zlib-devel
# 再次安装nginx
./configure --prefix=/usr/local/nginx
make
make install
2.3 启动
cd /usr/local/nginx/sbin
# 启动
./nginx
# 浏览器访问
192.168.126.139
# 如果连接不通,关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
# 快速停止
./nginx -s stop
# 关闭连接后停止
./nginx -s quit
# 重启
./nginx -s reload
3 nginx配置
3.1 简单运行原理
nginx启动,master主进程读取配置文件,开启多个work子进程,子进程处理请求
3.2 nginx.conf
# work进程数量,一般对应cpu核数
worker_processes 1;
events {
# 每个work进程可以开启的连接数量
worker_connections 1024;
}
http {
# 引入文件类型
include mime.types;
# 默认文件类型
default_type application/octet-stream;
# 数据零拷贝,网络接口去读文件
sendfile on;
# 保持连接超时时间
keepalive_timeout 65;
# 虚拟主机, vhost
server {
# 监听端口号
listen 80;
# 域名或主机名
server_name localhost;
# 子路径
location / {
# 根目录 相对路径
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
3.3 service_name
# 配置多个域名或主机名
service_name 域名1 域名2;
# 通配符匹配
service_name *.xxx.com # 匹配以什么结尾的域名
service_name www.xxx.* # 匹配以什么开头的域名
# 正则匹配
service_name ~^[0-9]+\.xxx\.com$;
4 反向代理
4.1 基本配置
server {
listen 80;
server_name localhost;
location / {
# proxy_pass 代理服务地址
proxy_pass http://www.baidu.com;
}
}
4.2 负载均衡配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 配置多个服务
# 轮询策略
upstream httpds {
# weight配置轮询的权重,down下线,backup备用
server 192.168.126.139:80 weight=7 down;
server 192.168.126.140:80 weight=2;
server 192.168.126.140:80 weight=1 backup;
}
server {
listen 80;
server_name localhost;
location / {
# 使用upstream中服务
proxy_pass http://httpds;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
# 其他负载均衡策略,无法动态上下线,基本用不到
ip_hash # ip定向用户转发,可能流量倾斜
least_conn # 最少连接访问,可能后端机器性能本来就不一样
url_hash # url定向流量转发,适用于固定资源不在同一台服务器时
fair # 后端响应时间,可能造成流量倾斜
5 动静分离
5.1 配置
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://xxx;
}
location /css {
# 去html目录下css下找静态资源,需要提前把静态资源放到html目录下
root html;
index index.html index.htm;
}
location ~*/(css|js|img) {
# 去html目录下找静态资源
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
5.2 url rewrite
server {
listen 80;
server_name localhost;
location / {
# 重写url 正则(入参使用括号) 替代内容,$1第一个入参 flag标记
# flag: break匹配到不会继续往下匹配,last匹配完后会继续匹配,redirect临时重定向302,permanent永久重定向301,浏览器会显示跳转的地址
rewrite ^([0-9]+.html)$ /index.jsp?pageNum=$1 break;
proxy_pass http://xxx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
6 referers检测
# 防盗链
server {
listen 80;
server_name localhost;
location / {
# 检测referes, none不存在
valid_referers none | 192.168.126.139;
if ($invalid_referer){
return 403;
}
proxy_pass http://xxx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
7 高可用
7.1 keepalived
# 可完成nginx主备存活判断
# 安装
yum install -y keepalived
8 SSL配置
8.1 配置
server {
listen 443 ssl;
server_name xx.com;
ssl_certificate /data/cert/server.crt; # 证书crt文件位置;
ssl_certificate_key /data/cert/server.key; # 证书key文件位置
}