nginx,安装 ,配置

本文介绍了在Ubuntu系统中如何安装nginx,包括设置apt仓库、导入签名密钥以及安装过程。同时,文章还讲解了nginx的配置文件结构,如简单指令、块指令和上下文,并提到了与Django项目的部署配合。此外,文中还讨论了nginx的反向代理配置和负载均衡策略,包括weight、down、backup、ip_hash和fair等算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx

高性能的HTTP服务器和反向代理服务器

在django项目部署时一般使用nginx和其他服务器一起搭配使用,nginx用来处理静态资源文件

此处为ubuntu安装流程:
按照官方文档执行安装,顺序执行下列命令:

安装

安装前置

sudo yum install curl gnupg2 ca-certificates lsb-release

要為穩定的nginx軟件包設置apt倉庫

echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

使用主線nginx軟件包时,使用下面的命令

echo "deb http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

設置存储位置以使我們的軟件包優先於發行版提供的軟件包

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

導入一個官方的nginx簽名密鑰,以便apt可以驗證軟件包的真實性。獲取密鑰

curl -o /tmp/nginx_signing.key https://nginx.org/keys/nginx_signing.key

驗證下載的文件包含正確的密鑰

gpg --dry-run --quiet --import --import-options show-only /tmp/nginx_signing.key

注意:在Ubuntu 16.04上,請改用以下命令:

gpg --with-fingerprint /tmp/nginx_signing.key

輸出應包含完整的指紋 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 ,如下所示

pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

最後,將密鑰移動到apt可信密鑰存儲區(請注意“ asc”文件擴展名更改)

sudo mv /tmp/nginx_signing.key /etc/apt/trusted.gpg.d/nginx_signing.asc

安裝nginx,運行以下命令:

sudo apt update
sudo apt install nginx
nginx控制——系统指令
systemctl enable nginx设置开机自启
systemctl start nginx启动nginx服务
systemctl status nginx查看nginx状态
systemctl stop nginx关闭nginx服务
systemctl disable nginx禁止开机自启

一般不建议使用linux中的系统指令来控制nginx服务器,因为在使用系统指令时无法传递参数

ngiunx有自带的命令来控制nginx服务器

指令
nginx -t不运行,仅测试配置文件
nginx -c configpath从指令路径加载配置文件,启动nginx
nginx -t -c configpath测试指定配置文件
nginx -v查看版本
nginx -V查看所有的配置信息
nginx -s singal给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
stop快速关闭
quit优雅关闭
reload重新加载配置

nginx的配置:

nginx配置文件包含指定指令控制的模块
指令分为简单指令和块指令

一个简单指令由名称和参数组成,以空格分隔,并以分号结尾
一个块指令和简单指令具有相同的结构,但不是以分号结束,而是以一个大括号包围的一堆附加指令结束

如果一个大括号内可以有其他的指令他就被称为一个上下文,

例如:(events, http, server, location)

格式

格式类似于JSON
分为指令和块指令
	指令就是 key  value ,单value可能是多个
	块指令 key  {},value是大括号没有分号
	
main  # 全局设置
	
events{  # 指定工作模式以及连接上限
use epoll;
worker_connections 1024;
}
use 指定nginx工作模式
epoll    高效工作模式,linux
kqueque  高效工作模式,bsd
poll     标准模式
select   标准模式

worker_connections定义nginx每个进程的最大连接数,一般根据cpu的核心数来指定
正向代理  连接数*进程数
反向代理  连接数*进程数/4
linux系统限制最多能同时打开65535个文件,默认上限就是65535,可解除 ulimit -n 65535


http  # http的配置
	upstream  # 负载均衡配置
	service  #  主机设置
		location  # url路由匹配

使用nginx和runserver对接时的配置

server {
	    listen       80;
	    server_name  localhost;

	    # 配置项目根目录位置
	    root   /var/www/GP1AXF;
	    #charset koi8-r;
	    #access_log  /var/log/nginx/host.access.log  main;

        # 匹配静态资源地址,以static开头的
	    location /static {
	        # alias 使用别名访问此路径时会将请求路径切割,并与定义的别名拼接
	        alias  /var/www/GP1AXF/static;
	    }
		# 和django的runserver对接的url配置
	    location / {
	    			proxy_pass http://127.0.0.1:8000;
	    }
	}

nginx反向代理的配置:

proxy_pass URL反向代理转发地址,默认不转发header,需要转发header则设置proxy_set_header HOST $host;
proxy_method POST转发的方法名
proxy_hide_header Cache-Control指定头部不被转发
proxy_pass_header Cache-Control设置哪些头部转发
proxy_pass_request_header on设置转发http请求头
proxy_pass_request_body on设置转发请求体

负载均衡

负载均衡模块,通过一个简单的调度算法来实现客户ip到后端服务器的负载平衡
写法:

upstream myproject {
ip hash;  # 指定负载均衡分发的规则
#  指定负载均衡的服务器
server 127.0.0.1:8000  
server 127.0.0.1:8001 down;
server 127.0.0.1:8002 weight=3;
server 127.0.0.1:8003 backup;
}

负载均衡算法:
weight 负载权重
down 当前server不参与负载均衡
backup 其他机器全down掉或满载使用此服务
ip_hash 按每个请求的hash结果分配
fair 按后端响应时间来分(第三方的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值