wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
# cd 到下载目录中
tar -zxvf nginx-1.12.0
# cd 到解压目录里面
./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module
# 执行完上一步
make && make install
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启动脚本目录
./sbin/nginx # 直接启动 nginx 服务
./sbin/nginx -s stop # 关闭 nginx 服务
./sbin/nginx -s reload # 平滑重启(修改了nginx配置文件,不重启服务就加载配置且生效)
../sbin/nginx -t # 检测nginx.conf 配置文件的语法正确性
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 #平滑重启
# 写入到本地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
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;
}
}
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" "-"
# location存在于 nginx.conf 的 server 中
# 一个 server 可以配置多个 location
# 我的请求发给nginx的时候,nginx不做处理,直接返回给django
# www.xxx.com/login
# www.xxx.com/register
location / {
uwsgi_pass http:0.0.0.0:8000;
}
# 如果你想请求图片资源,就直接丢给nginx去做处理
# ginx处理静态资源更为优秀
# lias 给location配置一个文件工作目录
# 使用待定
# www.xxx.com/xxx.jpg
location ~* \.(gif|jpg|jpeg|mp4)$ {
alias /data/static/;
}
# 正向代理
# 代理的是客户端
# 反向代理
# 代理的是服务端
server {
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://192.168.1.162; # 动态请求直接转发给 该ip;
}
# 环境准备,准备3台服务器
192.168.1.161 nginx入口主机
192.168.1.162 应用服务器1
192.168.1.163 应用服务器2
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;
}
}
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;
# 配置 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
# 访问自己的nginx负载均衡的ip地址,查看结果
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。