IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx在Windows和Linux下的常用配置 -> 正文阅读

[系统运维]Nginx在Windows和Linux下的常用配置


前言

Nginx高性能HTTP和反向代理服务器,占内存少并发强,支持高达50000个并发连接数


一、负载配置

经过反向代理服务器,将请求平摊分发到多个服务器

负载均衡策略:

1.轮询(默认)

请求按照时间顺序逐一分配到不同后端服务器,如果宕机,能自动剔除

2.权重(weight)

weight 权重,默认为1,越高被分配的客户端越多

server ip:8080 weight=1
server ip:8081 weight=2

3.IP HASH

请求按照访问 ip 的 hash 结果分配,每个访客就可固定访问一个后端服务器

ip_hash
server ip:8080
server ip:8081

配置实例:

在 http 块中加入

http {
	...
	upstream server01 {
		server ip:8080 weight=1;
		server ip:8081 weight=2;
	}

	server {
		listen          80;
		server_name     ip;
		access_log      logs/domain1.access.log main;
		location / {
			proxy_pass	http://server01;
			root  html;
			index	index.html index.htm;
		}
	}
}

二、动静分离

静态资源和动态资源分开部署,可通过 location 指定转发,expires 设置缓存过期时间,无修改返回 304,有修改返回 200

静态访问

静态资源目录

/data/imgs/1.png
/data/html/a.html
server {
	location /html/ {
		root	/data/;
		index	index.html index.htm;
	}
	location /imgs/ {
		root	/data/;
		autoindex	on;
	}
}

高可用

keepalived:要安装,要有虚拟IP,检测一个 Nginx 服务器宕机则会切换到另一个 Nginx 服务器

1.修改 etc 目录中的 keepalived.conf 完成高可用配置,主从配置

2.添加脚本,检测 Nginx 是否 keepalived

3.启动 Nginx 和 keepalived(systemctl start keepalived.service)


三、配置记录

1.运行原理

一个 master 和多个 worker

优点:

1.利于 Nginx 热部署操作

2.每个 worker 是独立进程,一个出问题,其他继续争抢,保证服务不会中断

3.linux 系统支持IO多路复用,worker 数量等同于CPU数量最优

worker 工作

客户端发送请求到 master,多个 worker 开始争抢得到任务再访问后端

worker 占用连接数,2个或4个

如果有4个worker的话,支持最大并发数

静态访问:worker_connections * worker_processes / 2

反向代理:worker_connections * worker_processes / 4

常用命令

版本 ./nginx -v

启动 ./nginx

关闭 ./nginx -s stop

重载 ./nginx -s reload


2.配置实例

全局块:影响服务器整体运行的配置指令部分

worker_processes 1; # 可支持并发数量

events块:配置服务器与用户网络连接部分

worker_connections 1024;	# 支持最大连接数

http与server块

location [ = | ~ | ~* | ^~ ] /uri/ { ... }

=:用于不含正则表达式的 uri 前,严格匹配

~:用户表示 uri 包含正则表达式,区分大小写

~*:用于表示 uri 包含正则表达式,不区分大小写

^~:用于不含正则的 uri 前,服务器找到表示 uri 和请求字符串匹配度最高的 location 后

HTTPS 与 WSS

# https
server {
    listen 443 ssl;
    server_name _;
    ssl_certificate /usr/local/cert/xxx.pem;
    ssl_certificate_key /usr/local/cert/xxx.key;
    ssl_session_timeout 30m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    
    location / {
		proxy_pass http://127.0.0.1:3002;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		# 非默认端口需要添加$server_port
		proxy_set_header Host $host:$server_port; 
		proxy_set_header X-Real-IP $remote_addr; 
		proxy_redirect off;
    }
}
# wss
server {
    listen 444 ssl;
    server_name _;
    ssl_certificate /usr/local/cert/xxx.pem;
    ssl_certificate_key /usr/local/cert/xxx.key;
    ssl_session_timeout 30m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    
    location / {
	    proxy_pass http://127.0.01:3003;
	    # 代理到上面的地址去
	    proxy_http_version 1.1;
	    proxy_set_header Upgrade $http_upgrade;
	    proxy_set_header Connection "Upgrade";
    }
}

Vue

server {
    listen 80;
    server_name _;
    index index.html index.htm;
    root  /www/wwwroot/project;
    
    location /api {
        proxy_pass http://ip:port/project-name;
    }
    
    location / {
        try_files $uri $uri/ @router;
        index  index.html index.htm;
    }
    
    location @router {
        rewrite ^.*$ /index.html last;
    }
    # 防止的路由在nginx中刷新出现404,需要rewrite到index.html中,然后交给路由在处理请求资源
}
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:57:18  更:2021-08-24 16:01:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:53:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码