一 、下载nginx 并解压
二 、编译并检查 安装 pcre
#下载
wget https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz
#解压安装包:
tar -zxvf pcre-8.40.tar.gz
#进入安装包目录
cd pcre-8.40
#编译安装
./configure
make && make install
#查看pcre版本
pcre-config --version
三 、安裝nginx
- 进入解压路径使用命令编译
./configure
安装make && make install
- 安装opebssk ,
zlib yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
- 进入 /usr目录 查看有没有local/nginx 文件
- 进入/usr/local/nginx/sbin 路径下
- 使用命令
./nginx
启动 - 使用命令
ps -ef | grep nginx
查看进程 - 使用ip地址在浏览器访问 出现 welcome to nginx 字样提示 表示成功
四 、配置开放端口
-
使用
firewall-cmd --list-all
查看查看开放端口号 -
若出现 “FirewallD is not running” 字样表示防火墙已关闭
-
使用命令
systemctl start firewalld
开启防火墙 -
使用命令
systemctl status firewalld
查看防火墙状态 出现"running" 表示防火墙开启 -
再次查看端口就可以看到端口了
-
添加开放端口命令
sudo firewall-cmd --add-port=8001/tcp --permanent
-
当出现 success 字样 执行命令重启防火墙
firewall-cmd --reload
-
若要关闭防火墙 执行命令
systemctl stop firewalld
五 、nginx常用命令
- 操作nginx命令要在/usr/local/nginx/sbin 目录下执行
- 查看 nginx 版本号
./nginx -v
- 启动 nginx
./nginx
- 关闭 nginx
./nginx -s stop
- 重新加载 nginx
./nginx -s reload
六 、NGINX配置文件
- 配置文件的路径在 /usr/local/nginx/conf/nginx.conf
- worker_processes 1; nginx处理并发 值越大处理并发量越多
- worker_connections 1024; 服务器与用户的网络连接 支持最大连接数
- 修改 server 内的 server_name 的ip地址
- 修改 server 内的 location 添加 prox_pass http:// 反向代理地址:端口;
- 重新加载nginx
server {
listen 80;
server_name 192.168.48.136; # nginx 默认端口80 地址
location / {
root html;
proxy_pass http://127.0.0.1:8080; # 反向代理要跳转的地址
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
- 根据地址的路径访问不同地址的资源
- 修改配置文件
### 测试反向代理 路径指向不同地址
server {
# 配置监听端口
listen 9001;
# 监听访问地址
server_name 192.168.48.136;
# 配置访问路径 包含 edu 路径跳转对应端口
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
# 配置访问路径 包含 vod 路径跳转对应端口
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
- 刷新nginx
七 、location 中的指令
= : 用于不含正则表达式的 uri 前, 要求请求字符串与 uri 严格匹配, 如果匹配成功, 就停止继续向下搜索并立即处理改请求
~ : 用于表示 uri 包含正则表达式, 并且区分大小写
~* : 用于表示 uri包含正则表达式, 并且不区分大小写
^~ : 用于不含正则表达式的 uri 前, 要求 NGINX 服务器找到标识 uri 和请求字符串匹配度最高的 location 后, 立即使用此 location 处理请求, 而不在使用 location 块中的正则 uri 和请求字符串做匹配
注意 : 如果 uri 包含正则表达式, 则必须要有~ 或者 ~* 标识
八 、负载均衡
### 负载均衡服务列表 myserver名字可以自定义
upstream myserver {
# 添加服务地址
server 192.168.48.136:8080;
server 192.168.48.136:8081;
}
server {
listen 80;
server_name 192.168.48.136;
location / {
# 将访问地址跳转指向定义的服务列表
proxy_pass http://myserver;
# 超时时间
proxy_connect_timeout 10;
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
九 、Nginx分配服务器策略
- 轮询 (默认) 每个请求按时间顺序逐一分配到不通的后端服务器 down掉的服务器 自动剔除
- weight 权重策略 默认值是1 权重越高被分配的客户就越多
upstream myserver {
# 添加服务地址
server 192.168.48.136:8080 weight=5;
server 192.168.48.136:8081 weight=10;
}
- ip_hash 每个请求按房屋ip的hash结果分配, 这样每个访客固定访问一个后端服务器, 可以解决session共享的问题
可以简单的理解为用户第一次访问的是8080 后面都会只访问8080 不会访问8081
upstream myserver {
ip_hash;
server 192.168.48.136:8080;
server 192.168.48.136:8081;
}
- fair(第三方) 按后端服务器的响应时间来分配请求, 响应时间短的优先分配
upstream myserver {
server 192.168.48.136:8080;
server 192.168.48.136:8081;
fair;
}