Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx学习

nginx学习

作者头像
是小张啊喂
发布于 2021-08-09 09:42:43
发布于 2021-08-09 09:42:43
40500
代码可运行
举报
文章被收录于专栏:软件软件
运行总次数:0
代码可运行

什么是nginx?

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好

nginx安装

1、手动安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#安装 nginx 
$ yum install nginx

#启动nginx
$ systemctl start nginx

#加入开机启动
$ systmctl enable nginx

#查看nginx的状态
$ systemctl status nginx

#检查 nginx 文件语法是否此错误
$ nginx -t

# 重载 nginx 配置
$ nginx -s reload
2、docker安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 拉取镜像
$ docker pull nginx

# 运行docker
$  docker run  -p 80:80 --name docker-nginx -d nginx

# 将容器中的文件复制到一个文件夹中
$ docker cp docker-nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf

# 删除上一个运行的 nginx 容器
$ docker rm -f docker -nginx

# 重新启动一个容器 将数据卷映射到刚才创建的目录
$ docker run  -p 80:80 --name docker-nginx1 -d nginx 
		-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  
        -v /usr/local/nginx/conf.d:/etc/nginx/conf.d
        -v /usr/local/nginx/log:/var/log/nginx
3、docker-compose安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '3.1'
services:
  nginx:
    image: nginx
    restart: always
    container_name: nginx
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 80:80
      - 443:443
    volumes:
      - /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /usr/local/nginx/log:/var/log/nginx

nginx重定向

注:需要先将服务器的ip解析到域名上

将域名重定向到当前的地址和端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    # 监听的端口
    listen 80;
    # 域名
    server_name www.xxx.xxx;
    rewrite ^(.*)$ https://$host$1 permanent;
    client_max_body_size 1024m;
    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 需要代理的 地址和端口
        proxy_pass http://127.0.0.1:8080/;
    }
}

配置https

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    # 监听的端口 并开启ssl
    listen 443 ssl; 
    # 域名
    server_name www.xxx.xxx;
    # 证书 不同网站申请的证书不同 均可以 只是后缀区分
    ssl_certificate cert/xxx.crt;
    ssl_certificate_key cert/xxx.key;
    ssl_session_timeout 5m;
    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:8080/;
        #add_header Content-Security-Policy upgrade-insecure-requests;
    }
}

nginx搭建文件服务器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location /images/ {
    root   /root/;
    autoindex on;
}

root 配置的意思是,会在root配置的目录后跟上URL,组成对应的文件路径。

意思就是我们在浏览器输入的这个地址实际访问的是

root/images

会把我们的location后面的/images拼到实际访问的路径之后

root/images/images

1、处理方法是把root后面的images去掉

2、root替换成alias

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location /images/ {
    alias   /root/images/;
    autoindex on;
}

nginx页面缓存

proxy_cache_path

格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]

说明:

path -缓存文件存放的位置

levels-缓存目录结构,可以是1、2、3位数字作为目录,最多是3位数字如:1,1:2

keys_zone -指定缓存池名字及大小,每个定义缓存路径必须不同

inactive -设置每个缓存区缓存文件的有效时长,超过该时长没被访问的缓存被删除

max_size -设置不活动的缓存大小,不活动的缓存超过该大小后被删除

$upstream_cache_status包含以下几种状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
·MISS 未命中,请求被传送到后端
·HIT 缓存命中
·EXPIRED 缓存已经过期请求被传送到后端
·UPDATING 正在更新缓存,将使用旧的应答
·STALE 后端将得到过期的应答
配置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 开启gzip
gzip  on;
# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;
# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间。一般设置12
gzip_comp_level 2;

proxy_cache_path /root/cache/ levels=1:2 keys_zone=tmpcache:100m max_size=10g;

server {
    listen       80;
    server_name  localhost;
    charset utf-8;
    # 缓存的服务地址
    add_header X-Via $server_addr;
    # 缓存的状态 用于区分访问的资源是缓存的还是加载的
    add_header X-Cache $upstream_cache_status;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        # 缓存名称
        proxy_cache tmpcache;
        # 需要缓存的数据状态 需要缓存保留的时间
        proxy_cache_valid any 1h;
        # 代理地址
        proxy_pass http://127.0.0.1:8080;
    }
关于gzip命令说明
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gzip配置的常用参数

gzip on|off; #是否开启gzip

gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)

gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)

gzip_disable #正则匹配UA 什么样的Uri不进行gzip

gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)

gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)

gzip_proxied # 设置请求者代理服务器,该如何缓存内容

gzip_types text/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css

gzip_vary on|off # 是否传输gzip压缩标志

nginx访问控制

deny指令
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
allow
语法:    allow address | CIDR | unix: | all;
默认值:配置段:    http, server, location, limit_except

允许某个ip或者一个ip段访问.如果指定unix:,那将允许socket的访问.
注意:unix在1.5.1中新加入的功能,如果你的版本比这个低,请不要使用这个方法。

deny
语法:    deny address | CIDR | unix: | all;
默认值:配置段:    http, server, location, limit_except

Unix 是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。 CIDR 一般指无类别域间路由。无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法。

nginx.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 添加nginx扫描的文件
include blockips.conf;

blockips.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 禁用访问
deny 192.168.1.101;
# 允许访问
allow 192.168.1.102;

nginx负载均衡

1、默认分配
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream ipaddr { 
      server 192.168.1.101:8080; 
      server 192.168.1.102:8081; 
}

location / { 
    root  html; 
    index  index.html index.htm; 
    # 需要实现负载均衡的地址
    proxy_pass http://ip; 
}
2、按照一定比例轮询
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream ipaddr { 
	# weight 的值越大 所请求到的几率越大
    server 192.168.1.101:8080 weight=1; 
    server 192.168.1.102:8081 weight=2; 
} 
3、响应分配
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream ipaddr {
    # 公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求
    server 192.168.1.101;
    server 192.168.1.102;
    fair;
}
4、固定ip分配
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream ipaddr {
    # 请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
    ip_hash;
    server 192.168.1.101;
    server 192.168.1.102;
}
5、请求结果分配
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream ipaddr {
    # 与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
    hash $request_uri;
    hash_method crc32;
}

以上就是常用得一些nginx功能分享,如果错误请指正,十分感谢!

学习这件事,不是缺乏时间,而是缺乏努力。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
nginx学习配置
格式:proxy_cache_path path [levels=numbers] keys_zone=zone_name:zone_size[inactive=time] [max_size=size]
是小张啊喂
2021/02/13
4870
nginx学习配置
『学习笔记』使用 Nginx 作为反向代理服务器详细配置指引
🎈今日推荐——https://cloud.tencent.com/developer/article/2470059
数字扫地僧
2024/11/24
1.6K0
『学习笔记』使用 Nginx 作为反向代理服务器详细配置指引
『学习笔记』Nginx 中的负载均衡配置与优化全面指南
🎈今日推荐——https://cloud.tencent.com/developer/article/2470391
数字扫地僧
2024/11/25
4710
『学习笔记』Nginx 中的负载均衡配置与优化全面指南
『学习笔记』Nginx 基础入门与配置详解
🎈今日推荐——https://cloud.tencent.com/developer/article/2469533
数字扫地僧
2024/11/23
1980
『学习笔记』Nginx 基础入门与配置详解
nginx的web缓存服务环境部署记录
web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输出内容给客户端,而不是向源服务器再次发送请求.Web缓存降低了内容源Web服务器,数据库的负载,减少了网络延迟,提高了用户访问的响应速度,增强了用户体验. web缓存服务器中,最著名的要数Squid Cache(简称为Squid),Squid是一个流浪的自由软件的代理服务器和Web缓存服务器。 --------
洗尽了浮华
2018/01/22
1.8K0
nginx的web缓存服务环境部署记录
nginx搭建 负载均衡
配置/usr/local/nginx/conf/nginx.conf的http,配置vhost虚拟主机目录,然后配置vhost下的比如LB.conf文件。
用户1499526
2019/07/15
4990
nginx基本应用(二)
正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。 反向代理实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。 反向代理工作在服务期的前端,作为前端服务器,正向代理工作在客户端的前端,为客户端做代理。
没有故事的陈师傅
2019/07/30
7490
Nginx配置参数中文说明
Web1:192.168.0.5(Nginx-Node1/Nginx-Web1) ;Web2:192.168.0.7(Nginx-Node2/Nginx-Web2)
用户4283147
2022/10/27
6920
Nginx配置参数中文说明
值得收藏的Nginx配置参数中文说明
Web1:192.168.0.5(Nginx-Node1/Nginx-Web1) ;Web2:192.168.0.7(Nginx-Node2/Nginx-Web2)
哲洛不闹
2020/06/04
1.3K0
Nginx安装、实现反向代理及深度优化
一、Nginx的安装 关于Nginx的基本概念,在之前的博文中:https://blog.51cto.com/14227204/2464167 有详细的介绍,这篇博文就直接从安装开始谈起。
小手冰凉
2020/02/11
3K0
Nginx安装、实现反向代理及深度优化
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能。 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)
洗尽了浮华
2018/01/22
3.3K0
nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
nginx的配置
常用的命令 nginx -h # 帮助 nginx -t # 验证配置文件的正确性 nginx -v # 查看nginx的版本 nginx -c filename # 按指定的配置文件启动,默认的路径conf/nginx.conf nginx -s reload # 重新载入配置文件 nginx -s reopen # 重启nginx nginx -s stop # 关闭nginx nginx -s quit # 退出 nginx的配置文件的详解 nginx的配置分为四个部分
匿名用户的日记
2021/12/14
6760
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案。nginx可以用轮询、IP哈希、URL哈希等方式调度后端服务器,同时也能提供健康检查功能。目前有众多公司均已经部署使用nginx实现基于七层的负载均衡功能。 1)Nginx负载均衡 为了实现Nginx的反向代理以及负载均衡功能,应用中需要用到两个模块,HttpProxyModule和HttpUpstreamModule模块;其中HttpProxyModule模块的作用是将用户的数据请求转发到其他服
洗尽了浮华
2018/01/23
8K0
nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx 常用配置汇总!从入门到干活足矣
众所周知,Nginx 是 Apache服务不错的替代品。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力在同类型的网页服务器中表现较好,因此国内知名大厂例如:淘宝,京东,百度,新浪,网易,腾讯等等都在使用Nginx网站。
民工哥
2021/06/16
9.9K0
Nginx安装及详细配置
生产环境:前端采用nginx进行的部署,后端则是通过kubesphere的一键式部署。
小炜同学
2022/09/23
1.2K0
Nginx 介绍
郭顺发
2023/07/17
2060
Nginx技术全面解析:从基础到高级应用
大家好,我是腾讯云开发者社区的 Front_Yue,本篇文章将针对Nginx的性能优化和高级配置进行详细介绍。
Front_Yue
2024/01/21
9571
Nginx技术全面解析:从基础到高级应用
【Nginx】nginx简单入门,nginx负载均衡
配置好了之后,执行 nginx -t 检查配置是否有错,出现下面的提示则没有错误,有错误会写出错误多少行的
Alone88
2019/10/22
1.9K0
【Nginx】nginx简单入门,nginx负载均衡
nginx 模块详解
worker_processes number | auto; worker进程的数量;通常应该为当前主机的cpu的物理核心数 worker_cpu_affinity auto [cpumask] #将work进程绑定在固定cpu上提高缓存命中率 例: worker_cpu_affinity 0001 0010 0100 1000; worker_cpu_affinity 0101 1010; worker_priority number 指定worker进程的nice值,设定worker进程优先级: [-20,20]    worker_rlimit_nofile number worker进程所能够打开的文件数量上限,默认较小,生产中需要调大如65535
星哥玩云
2022/07/26
1.9K0
nginx 模块详解
Linux下Nginx1.8安装 原
修改部署目录下conf子目录的nginx.conf文件(如nginx-1.5.13\conf\nginx.conf)内容,可调整相关配置。
尚浩宇
2018/08/17
1.2K0
相关推荐
nginx学习配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验