1.1 介绍
- nginx可以处理静态文件夹,所以静态文件,我们直接把静态文件交给nginx
- 而对于请求我们把它交给后端去处理
1. 2图解
2. 环境准备
2.1 环境
# 三台服务器
处理静态
处理动态
负载均衡服务器
192.168.16.140 充当静态服务器,返回小猫咪的页面,以及一些图片资源
# nginx,conf 配置
server {
listen 80;
server_name 192.168.16.140;
#当所有请求来自于192.168.16.140/时,就进入如下路径匹配,返回小猫咪页面
location / {
root html;
index index.html index.htm;
}
# 域名匹配,所有的png、jpg、gif请求资源,都去/opt/images底下找
# 当请求是192.168.16.140/**.jpg 就进入如下location匹配,返回/opt/images/目录下的内容
location ~* .*\.(png|jpg|gif)$ {
root /opt/images/;
}
}
2.配置动态请求的服务器 # 安装 nginx django
192.168.16.37 运行django页面(动态),
项目启动在 0.0.0.0:8000
# 后台运行
python3 nginx_django/manage.py runserver 0.0.0.0:8000 &
# 动态(django)静态请求转发
# nginx.conf 配置
upstream mydjango {
server 192.168.16.37:8000;
# server ;
}
upstream mystatic {
server 192.168.16.140;
# server ;
}
server {
# 监听的端口号
listen 80;
# 填写服务器的域名,或者IP,或者localhost
server_name 192.168.16.37;
# 当外部请求,是192.168.16.37:80时候,就进入如下location,返回django页面,反向代理
location / {
proxy_pass http://mydjango;
}
# 静态文件转发
# 当外部请求时,192.168.16.37:80/**.jpg,就转发给那台静态资源服务器,去处理
location ~* .*\.(png|jpg|gif)$ {
proxy_pass http://mystatic;
}
}
3.在负载均衡器上,配置请求转发
192.168.16.241 配置负载均衡,动静分离的配置
# 轮询
upstream myserver {
server 192.168.16.140;
server 192.168.16.37;
}
server {
# 监听的端口号
listen 80;
# 填写服务器的域名,或者IP,或者localhost
server_name 192.168.16.241;
# 当外部请求,是192.168.16.37:80时候,就进入如下location,返回django页面,反向代理
location / {
proxy_pass http://myserver;
}
}
2.2 nginx.conf
2.2.1 静态服务器nginx.conf完整配置
#配置文件内容如下
# 进程数
worker_processes 1;
events {
worker_connections 1024;
}
# 核心代码
http {
include mime.types;
default_type application/octet-stream;
# 定义nginx访问日志的格式
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;
# 推图片等静态文件压缩,提升传输效率
gizp on;
#server被称为虚拟主机,可以有多个
# 主机
server {
listen 80;
server_name 192.168.16.140;
#当所有请求来自于192.168.16.140/时,就进入如下路径匹配,返回小猫咪页面
location / {
root html;
index index.html index.htm;
}
# 域名匹配,所有的png、jpg、gif请求资源,都去/opt/images底下找
# 当请求是192.168.16.140/**.jpg 就进入如下location匹配,返回/opt/images/目录下的内容
location ~* .*\.(png|jpg|gif)$ {
root /opt/images/;
}
}
}
2.2.2 处理动态服务器nginx.conf完整配置
#配置文件内容如下
# 进程数
worker_processes 1;
events {
worker_connections 1024;
}
# 核心代码
http {
include mime.types;
default_type application/octet-stream;
# 定义nginx访问日志的格式
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;
# 推图片等静态文件压缩,提升传输效率
gizp on;
#server被称为虚拟主机,可以有多个
# 主机
# 动态(django)静态请求转发
# nginx.conf 配置
upstream mydjango {
server 192.168.16.37:8000;
# server ;
}
upstream mystatic {
server 192.168.16.140;
# server ;
}
server {
# 监听的端口号
listen 80;
# 填写服务器的域名,或者IP,或者localhost
server_name 192.168.16.37;
# 当外部请求,是192.168.16.37:80时候,就进入如下location,返回django页面,反向代理
location / {
proxy_pass http://mydjango;
}
# 静态文件转发
# 当外部请求时,192.168.16.37:80/**.jpg,就转发给那台静态资源服务器,去处理
location ~* .*\.(png|jpg|gif)$ {
proxy_pass http://mystatic;
}
}
}
2.2.3 负载均衡服务器nginx.conf完整配置
#配置文件内容如下
# 进程数
worker_processes 1;
events {
worker_connections 1024;
}
# 核心代码
http {
include mime.types;
default_type application/octet-stream;
# 定义nginx访问日志的格式
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;
# 推图片等静态文件压缩,提升传输效率
gizp on;
#server被称为虚拟主机,可以有多个
# 主机
upstream myserver {
server 192.168.16.140;
server 192.168.16.37;
}
server {
# 监听的端口号
listen 80;
# 填写服务器的域名,或者IP,或者localhost
server_name 192.168.16.241;
# 当外部请求,是192.168.16.37:80时候,就进入如下location,返回django页面,反向代理
location / {
proxy_pass http://myserver;
}
}
}