1.gnginx下载与安装
1.1下载
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
复制
1.2安装
1.2.1解压缩
# cd 到下载目录中
tar -zxvf nginx-1.12.0
复制
1.2.2安装
# cd 到解压目录里面
./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module
复制
1.2.3执行编译和安装
# 执行完上一步
make && make install
复制
1.2.4检查安装是否成功,一定存在下面四个文件夹,少一个都是失败
6.在/opt/nginx1-12/ 安装好nginx的目录,找到一个sbin的文件夹,找到nginx的启动命令,然后启动nginx服务
# 检查nginx安装后的目录,ll /opt/nginx1-12
drwxr-xr-x 2 root root 333 12月 6 09:32 conf 配置文件存放的目录, nginx.conf这个文件就是nginx的主配置文件
drwxr-xr-x 2 root root 40 12月 6 09:32 html 存放网页根目录的文件夹,存放了index.html **.html **.gif **.jpg
drwxr-xr-x 2 root root 6 12月 6 09:32 logs 日志目录
drwxr-xr-x 2 root root 19 12月 6 09:32 sbin nginx启动脚本目录
复制
1.2.5运行nginx的相关命令
./sbin/nginx # 直接启动 nginx 服务
./sbin/nginx -s stop # 关闭 nginx 服务
./sbin/nginx -s reload # 平滑重启(修改了nginx配置文件,不重启服务就加载配置且生效)
../sbin/nginx -t # 检测nginx.conf 配置文件的语法正确性
复制
1.2.6检查运行 nginx
2.nginx访问多域名配置
2.1编辑 nginx 配置文件
vim ./conf/nginx.conf
复制
# 多虚拟主机的配置
# (复制多个 server )
1.修改nginx底下的conf/nginx.conf ,修改信息如下
server {
listen 80;
server_name www.test1.com;
location / {
# 该服务的网页文件在 /data/test1 下
root /data/test1;
# 默认访问网页 index 文件可自己编辑
index test-index.html;
}
}
server {
listen 80;
server_name www.test2.com;
location / {
# 该服务的网页文件在 /data/test2 下
root /data/test2;
# 默认访问网页 index 文件可自己编辑
index test2-index.html;
}
}
复制
2.完成上述配之后
../sbin/nginx -t #检测语法
../sbin/nginx -s reload #平滑重启
复制
2.2编辑 Windows 的 host 文件
# 写入到本地dns解析文件,由于我是在windows中通过浏览器访问,应该在windows的hosts文件中添加记录
# hosts文件就是一个本地dns(就是将域名转化成ip地址)强制解析的文件
# windows的hosts文件就在这里:C:\Windows\System32\drivers\etc\hosts ,写入如下信息
# 虚拟机的 ip
192.168.1.162 www.test1.com
192.168.1.162 www.test2.com
复制
3.nginx状态模块功能
1.在 nginx.conf 的 server 中,添加一个参数即可
server {
listen 80;
server_name www.test2.com;
location / {
# 该服务的网页文件在 /data/test2 下
root /data/test2;
# 默认访问网页 index 文件可自己编辑
index test2-index.html;
}
# 在server 里面添加这个即可
location /status {
stub_status on;
}
}
复制

4.nginx访问日志功能
1.编辑 nginx.conf 打开注释
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
复制
2.log_format main 的参数详解
$remote_addr 记录客户端ip
$remote_user 远程用户,没有就是 “-”
$time_local 对应[14/Aug/2018:18:46:52 +0800]
$request 对应请求信息"GET /favicon.ico HTTP/1.1"
$status 状态码
$body_bytes_sent 571字节 请求体的大小
$http_referer 对应“-” 由于是直接输入浏览器就是 -
$http_user_agent 客户端身份信息
$http_x_forwarded_for 记录客户端的来源真实ip 97.64.34.118
复制
3.tail -f ./logs/access.log 就可以查看访问日志
# 内容如下
192.168.12.60 - - [06/Dec/2018:11:24:04 +0800] "GET / HTTP/1.1" 304 0 "-"
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/70.0.3538.110 Safari/537.36" "-"
复制
5.nginx的location配置动态静态资源
# location存在于 nginx.conf 的 server 中
# 一个 server 可以配置多个 location
复制
5.1动态资源请求,一般就是默认 location 配置
# 我的请求发给nginx的时候,nginx不做处理,直接返回给django
# www.xxx.com/login
# www.xxx.com/register
location / {
uwsgi_pass http:0.0.0.0:8000;
}
复制
5.2静态资源请求
# 如果你想请求图片资源,就直接丢给nginx去做处理
# ginx处理静态资源更为优秀
# lias 给location配置一个文件工作目录
# 使用待定
# www.xxx.com/xxx.jpg
location ~* \.(gif|jpg|jpeg|mp4)$ {
alias /data/static/;
}
复制
6.nginx正向反向代理的概念
# 正向代理
# 代理的是客户端
复制
# 反向代理
# 代理的是服务端
复制
6.1反向代理设置
server {
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://192.168.1.162; # 动态请求直接转发给 该ip;
}
复制
7.nginx负载均衡的简单使用
7.1环境准备
# 环境准备,准备3台服务器
192.168.1.161 nginx入口主机
192.168.1.162 应用服务器1
192.168.1.163 应用服务器2
复制
7.2关闭所有的防火墙
7.3配置
7.3.1在nginx入口主机里配置 nginx.conf
1.修改配置文件nginx.conf ,写入如下配置
# 定义负载均衡池名字叫做 mydjango
upstream mydjango {
# 池子中存放2个服务器,默认轮训方式调度服务器
server 192.168.1.162:8000;
server 192.168.1.163:8000;
# 也可以根据权重分配访问率
# 被分发的概率是 30%
# server 192.168.1.162:8000 weight=3;
# 被分发的概率是 70%
# server 192.168.1.163:8000 weight=7;
}
# root参数定义网页的根目录,可以写在虚拟主机内,局部变量
# 如果写在server标签外,就是全局变量
root html;
# 虚拟主机1
server {
listen 80;
# 访问域名
server_name www.xxx.com;
location / {
# 当请求发送到www.xxx.com的时候,匹配到 /
# 转到上方负载均衡池
proxy_pass http://mydjango;
# 包含语法参数,将一个配置文件添加到当前虚拟主机生效,这个文件要手动创建
# 这个proxy_params文件创建在/opt/nginx1-12/conf底下
include proxy_params;
}
}
复制
7.3.1主机 proxy_params 的配置
2.手动创建这个参数文件
# 参数只是给代理加上一些功能
# touch /opt/nginx1-12/conf/proxy_params
# 写入信息
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
复制
7.3.2部署应用服务器
# 配置 192.168.1.162 的应用服务器1
1.准备一个flask代码,运行
pip3 install flask
2.准备代码 myflask.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "<h1>我是服务器1</h1>"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)
3.启动应用服务器
python3 myflask.py
# 配置 192.163.1.163 的应用服务器2
1.准备一个flask代码,运行
pip3 install flask
2.准备代码 myflask.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "<h1>我是服务器2</h1>"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)
3.启动应用服务器
python3 myflask.py
复制
7.3.3.通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式
# 访问自己的nginx负载均衡的ip地址,查看结果
复制