Nginx

Nginx

Nginx配置
# 进入nginx安装目录
$ cd /usr/local/nginx

# 配置nginx.conf
  server {
        listen       8000;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8001;
           uwsgi_param UWSGI_SCRIPT CloudArchives.wsgi;
           uwsgi_param UWSGI_CHDIR /var/web/CloudArchives;
        	}
	error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    	root   html;
    	}
	}
	
# 启动nginx(进入sbin目录)
$ ./nginx
# 重启nginx
$ ./nginx -s reload
uwsgi.ini配置
[uwsgi]
#使用nginx连接时使用
socket=127.0.0.1:8001
#直接做web服务器使用 python manage.py runserver ip:port
#http=127.0.0.1:8080
#项目目录
chdir=/var/web/CloudArchives
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=CloudArchives/wsgi.py
#指定启动的工作进程数
processes=4
#指定工作进程中的线程数
threads=2
master=True
#保存启动之后主进程的pid
pidfile=uwsgi.pid
#设置uwsgi后台运行,uwsgi.log保存日志信息
daemonize=uwsgi.log
#设置虚拟环境的路径
#virtualenv=/Users/smart/.virtualenvs/dailyfresh

# wusgi建立软连接
$ ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
# 启动uwsgi
$ uwsgi --ini uwsgi.ini
Nginx负载均衡
upstream backends {
  server 172.16.179.130:10086;
  server 172.16.179.130:10087;
  server 172.16.179.130:10088;
}
server {
  listen 8080;
  server_name localhost;
  location / {
    proxy_pass http://backends;
  }
}

单体架构优点

小团队成型即可完成-开发测试上线;
bug修复很快,迭代周期短,速度快。

单体架构面临的挑战

单体宕机造成所有服务不可用
耦合度高,迭代测试部署成本高 单节点并发能力有限

集群

计算机以群体形态构成整个系统
群体构成一个整体,不能独立存在
提高并发及可用性
降低单服务器压力

集群优势

提高系统性能;
提高系统可用性;
可扩展性高。

集群使用的注意点

用户会话
定时任务
内网互通

什么是nginx

高性能的http和反向代理web服务,也提供smtp服务。 主要功能反向代理
通过配置文件可以实现集群和负载均衡
静态资源虚拟化

常见的服务

ms iis asp.net
weblogic jboss 传统行业 erp/物流
tomcat jetty J2EE
apache nginx 静态服务反向代理

Nginx部署

Nginx软件部署

安装nginx

yum install nginx

查看nginx是否安装成功,存在版本说明安装成功

nginx -v

关闭nginx服务

service nginx stop

启动nginx服务

service nginx start

查看nginx服务

service ajx | grep nginx

nginx常用文件

配置文件目录

/etc/nginx

log日志目录

/var/log/nginx

首页目录

/usr/sjare/nginx/html

操作的配置文件目录

/etc/nginx/conf.d

#全局配置文件
/etc/nginx/nginx.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ZmjxBJJ-1652146188089)(file:///C:/Users/17580/AppData/Local/Packages/oice_16_974fa576_32c1d314_2bd7/AC/Temp/msohtmlclip1/01/clip_image002.jpg)]

nginx的使用

远程连接文件进行配置nginx配置文件

  1. 创建本地目录./nginx,将本地目录与远程目录进行关联。
  2. vscode 安装sftp
  3. 打开nginx目录,
  4. ctrl+shift+p
  5. 修改sftp.json文件信息,建立远程连接
  6. 在对应目录空白处右键,选择Download Folder下载远程服务器文件(需要在提示框输入密码哦) 可以直接vi 在服务器中修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OKtYBNC9-1652146188091)(file:///C:/Users/17580/AppData/Local/Packages/oice_16_974fa576_32c1d314_2bd7/AC/Temp/msohtmlclip1/01/clip_image002.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-994C1o39-1652146188092)(file:///C:/Users/17580/AppData/Local/Packages/oice_16_974fa576_32c1d314_2bd7/AC/Temp/msohtmlclip1/01/clip_image004.png)]

ps:ubuntu系统操作 1、切换root用户; 2、安装openssh-server;3、进入远程连接服务cd /etc/ssh; 4、修改sshd_config中permitrootlogin yes ,允许root用户登录; 5、重新启动ssh服务sudoserver ssh start。

全局配置段

user nginx; # 默认用户名 pid/run/nginx.pid # 指定进程号 worker_connections 1024; #指定最大连接数为1024

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vXJyHrxT-1652146188093)(file:///C:/Users/17580/AppData/Local/Packages/oice_16_974fa576_32c1d314_2bd7/AC/Temp/msohtmlclip1/01/clip_image002.jpg)]

http配置段

sendfile    on;  # 开启高效文件传输模式
tcp_nopush  on;  # 防止网络阻塞
tcp_nodelay  on; # 防止网络阻塞
keepalive_timeout   65; # 长连接超时时间
types_hash_max_size 4096; 
include  /etc/nginx/mime.types;  # 文件扩展名与文件类型映射表
default_type  application/octet-stream;  # 默认文件类型
access_log  /var/log/nginx/access.log  main;  # log日志配置段

server配置段

include /etc/nginx/conf.d/*.conf;  # 导入形式进行配置server配置段
server {
    	listen       80; # 监听80端口服务1(只写端口号)
        listen       10.211.55.30; # 监听80端口服务
        listen       [::]:80; # 监听80端口服务
        server_name  _;  # 当前监听服务的名字
        location /{     # 指定的操作
        	root /etc/nginx/html; # 指定文件目录
        	index index.html;    # 创建返回首页文件
    }
}

通过location配置操作步骤:

  1. 创建主页面文件

  2. 添加server配置段,监听端口;

  3. 指定返回页面目录,指定匹配到的首页文件;

  4. 保存配置文件;

  5. 测试配置文件;

  6. 重新导入配置文件;

    测试配置文件

    nginx -t

    重新导入配置文件

    nginx -s reload

    若重新启动nginx需要删除nginx.pid文件,停止nginx服务,再重新启动

    非必要可不重启

通过配置文件配置http操作步骤

  1. 在conf.d文件夹中创建文件nginx.conf;
  2. 将server服务配置内容写入nginx.conf;
  3. 保存nginx.conf配置文件

location匹配规则优先级

server {
    listen       80; # 监听80端口服务1(只写端口号)
    listen       [::]:80; # 监听80端口服务
    server_name  _;  # 当前监听服务的名字
    ## 优先级最低
    location /{
        # 通用匹配
        return 400;    
    }

    ## 优先级最高
    location = /{     
        # 精确匹配
        return 401;
    }

    location ~ /{
        # 优先匹配
        return 402;
    }
}

try_files和return的使用及区别

try_files对根路径匹配无效

#try_files 在对根路径时是无法正常返回的,只能对子路径进行操作
    # $uri 是请求文件的路径
    # $uri/ 是请求目录的路径
location /a {
    try_files $uri $uri/ =400;
}
location /a {
    try_files $uri =401;
}

try_files配合@使用

locataion /b {
    try_files $uri $uri/ @didi;
}
location @didi {
    return 402;
}

return使用跳转

location /c {
    return 302 http://www.baidu.com;
}

匹配路径后的斜杠问题

#location子路径后不加斜杠,请求地址加不加斜杠都可以请求到
location /d {
    return 400;
}
#location子路径后加斜杠必须加斜杠才能匹配
location /e/ {
    return 401;
}

root 和 alias 的使用和区别

  1. root在指定根路径目录时若不定义index文件会查找默认index文件;

  2. root在指定子路径目录时若不定义index文件无法默认使用index;

  3. alias 在指定跟路径目录时若目录后不加斜杠,无法默认使用index文件,若增加斜杠会默认使用index.html文件;

    4.alias在指定子路径目录时目录后加不加斜杠,都可以默认使用index文件

# root
location / {
        # 未指定index文件不写index时也会加载index文件
        root /etc/nginx/html;
        # 默认加载index.html
        index index8000.html;
    }
# alias
location / {
        # 目录后不增加斜杠不会默认使用index.html
        alias /etc/nginx/html/;
    }

访问控制

location / {
        stub_status on; #返回nginx状态信息
        allow 121.239.108.8; # 指定哪个ip的客户端访问
        deny all; # 除了允许的其他都拒绝
    }

目录下载控制

location /download {
        alias /etc/nginx;
        # 开启目录下载服务自动下载
        autoindex on;
    }

什么是正向代理

客户端和目标服务器之间的一个代理服务器 (代理客户端,将客户端信息隐藏)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aROklnlu-1652146188094)(file:///C:/Users/17580/AppData/Local/Packages/oice_16_974fa576_32c1d314_2bd7/AC/Temp/msohtmlclip1/01/clip_image002.png)]

什么是反向代理

客户在请求目标服务器,由代理服务器决定访问哪个ip(代理服务器,隐藏服务器端信息)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YAH0l0GX-1652146188095)(file:///C:/Users/17580/AppData/Local/Packages/oice_16_974fa576_32c1d314_2bd7/AC/Temp/msohtmlclip1/01/clip_image004.png)]

反向代理

例子: 客户端访问80的时候,nginx由80转发给8000端口,代理服务器监听80端口,收到请求转发给8000端口。

# 反向代理使用
server{
    listen  80;
    listen [::]:80;
    location / { 
        # 当客户端访问80端口时,通过代理转发给8006端口
        proxy_pass http://121.43.39.107:8006;
    }
}
server{
    listen  8006;
    listen [::]:8006;
    location / {
        # 监听8000端口,返回对应的主页面
        root  /etc/nginx/html;
        index  index8000.html;
    }
}

负载均衡使用

# 负载均衡(轮询形式)
upstream jiaohuaoqing{
    server 121.43.39.107:8006;
    server 121.43.39.107:8007;
    server 121.43.39.107:8008;
}

server{
    listen  80;
    listen [::]:80;
    location / { 
        # 反向代理使用
        # 当客户端访问80端口时,通过代理转发给负载均衡对应的端口
        proxy_pass http://jiaohuaoqing;
        allow 121.239.108.8; # 指定哪个ip的客户端访问
        deny all;
    }

}
server{
    listen  8006;
    listen [::]:8006;
    location / {
        # 监听8006端口,返回对应的主页面
        root  /etc/nginx/html;
        index  index8000.html;
    }
}

server{
    listen  8007;
    listen [::]:8007;
    location / {
        # 监听8007端口,返回对应的主页面
        root  /etc/nginx/html;
        index  8007.html;
    }
}

server{
    listen  8008;
    listen [::]:8008;
    location / {
        # 监听8008端口,返回对应的主页面
        root  /etc/nginx/html;
        index  8008.html;
    }
}

负载均衡调度算法,常用的

  1. 轮询
  2. 加权轮询
  3. ip_hash 第一次请求会分配一个服务端的ip,以后的所有请求都会使用第一次的服务ip。
# 轮询
upstream jiaohuaoqing{
    # 默认为轮询调度算法
    server 121.43.39.107:8006;
    server 121.43.39.107:8007;
    server 121.43.39.107:8008;
}

# 加权轮询
upstream jiaohuaoqing{
    # 默认为轮询调度算法
    # server 121.43.39.107:8006;
    # server 121.43.39.107:8007;
    # server 121.43.39.107:8008;
    # 加权轮询,权重越大越多调度
    server 121.43.39.107:8006 weight=1;
    server 121.43.39.107:8007 weight=2;
    server 121.43.39.107:8008 weight=3;
}

# ip_hash 算法
# 负载均衡
upstream jiaohuaoqing{
    # ip_hash 算法
    ip_hash;
    server 121.43.39.107:8006;
    server 121.43.39.107:8007;
    server 121.43.39.107:8008;
}

日志定制操作

# 默认的日志格式 shell格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
# 设置日志输出格式
    log_format  proxy_log  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_real_ip" "$http_x_forwarded_for"';

server{
    listen  80;
    listen [::]:80;
    location / { 
        # 反向代理使用
        # 当客户端访问80端口时,通过代理转发给8006端口
        # proxy_pass http://121.43.39.107:8006;
        proxy_pass http://jiaohuaoqing;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header x-Forwarded-For $proxy_add_x_forwarded_for;
        allow 121.239.108.8; # 指定哪个ip的客户端访问
        deny all;

    }

}
server{
    listen  8006;
    listen [::]:8006;
    access_log  /var/log/nginx/app1/access.log  proxy_log; #使用新的格式
    real_ip_header X-Forwarded-For; #获取真实IP地址
    real_ip_recursive on; #开启获取真实IP地址服务
    location / {
        # 监听8006端口,返回对应的主页面
        root  /etc/nginx/html;
        index  index8000.html;
    }
}
  proxy_pass http://jiaohuaoqing;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header x-Forwarded-For $proxy_add_x_forwarded_for;
    allow 121.239.108.8; # 指定哪个ip的客户端访问
    deny all;

}

}
server{
listen 8006;
listen [::]:8006;
access_log /var/log/nginx/app1/access.log proxy_log; #使用新的格式
real_ip_header X-Forwarded-For; #获取真实IP地址
real_ip_recursive on; #开启获取真实IP地址服务
location / {
# 监听8006端口,返回对应的主页面
root /etc/nginx/html;
index index8000.html;
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值