首页 > 系统相关 >Nginx

Nginx

时间:2023-08-18 21:32:52浏览次数:35  
标签:http nginx ip server Nginx location port

Nginx

安装

# 安装Nginx所需要的依赖
yum install pcre-devel zlib zlib-devel openssl openssl-devel

# 解压Nginx

# 到nginx目录
./configure 
make install

cd /usr/local/nginx

# 启动nginx
cd sbin
./nginx

# 关闭
./nginx -s quit / stop

quit 停止外面请求,然后将nginx里面的请求处理完在关闭
stop 直接退出什么都不管

配置文件

nginx.conf

# 全局块设置
# 哪些用户可以操作nginx  参数一  用户   参数二 用户组
user nobody;
# 工作进程个数,越多越好。但是推荐设置成与服务器核心数一致或二倍
worker_processes 4;

# 错误日志存放位置
error_log logs/error.log warn;
# 进程号,不用改
pid /run/nginx.pid;

# event块设置
events {
	# 设置多路io复用,提高效率
    use epoll;
    # 设置每一个工作进程的最大链接数 
    worker_connections 1024;
}

# http块
http {
	# 引入浏览器解析的类型
    include mime.types;
    default_type mime.types.default;
	# 日志格式
	log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';
                    
	# 访问成功的时候记录日志的位置
    access_log logs/access.log main;

	# 启用文件的零拷贝传输。
    sendfile on;
    #  禁用 TCP 的发送缓冲,默认情况下开启以提高性能。
    tcp_nopush on;
    # 禁用 TCP 的 Nagle 算法,默认情况下开启以降低延迟。
    tcp_nodelay on;

    # 客户端与 Nginx 之间保持活动连接的超时时间。
    keepalive_timeout 65;

	# 启用 Gzip 压缩
    gzip on;
    # 等级越高越好,但是消耗cup性能
    gzip_comp_level 2;
    gzip_min_length 1000;
    # 压缩类型
    gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    # include /etc/nginx/conf.d/*.conf;  include 引入其他配置文件
    include demo.conf;
}

demo.conf

server {
	# 服务监听端口
	listen 80;
	server_name *.*;

	location / {
		return 200 '{"message": "Success"}';
	}
	
	# 开启浏览器缓存
	location /static {
    	expires 7d;  # 设置文件的过期时间为 7 天
	}
	
	
	location ~* \.(js|css)$ {
   		expires 30d;  # 设置 JavaScript 和 CSS 文件的过期时间为 30 天
	}
}

代理

正向代理

反向代理

server {
	listen 80;
	server_name *.*;
	
	location {
		# 反向代理
		proxy_pass http://ip:port;
	}
}

负载均衡

轮询

upstream 集群名 {
	server ip:port;
	server ip:port;
	server ip:port;
}
server {
	listen 80;
	server_name *.*;
	
	location {
		# 负载均衡 默认就是轮询
		proxy_pass http://集群名;
	}
}

轮询 + 权重

upstream 集群名 {
	# weight = x 值越高表示当前服务器被选中的概率越大
	server ip:port weight=10;
	server ip:port;
	server ip:port;
}
server {
	listen 80;
	server_name *.*;
	
	location {
		# 负载均衡
		proxy_pass http://集群名;
	}
}

ip_hash

upstream 集群名 {
	# 根据访问的ip计算出访问哪个一个服务器,保证只要ip没变一直都是访问同一个服务器
	ip_hash;
	server ip:port;
	server ip:port;
	server ip:port;
}
server {
	listen 80;
	server_name *.*;
	
	location {
		# 负载均衡
		proxy_pass http://集群名;
	}
}

注意:下面两种需要额外的依赖

url_hash

upstream 集群名 {
	# 根据访问的ip计算出访问哪个一个服务器,保证只要ip没变一直都是访问同一个服务器
	url_hash;
	server ip:port;
	server ip:port;
	server ip:port;
}
server {
	listen 80;
	server_name *.*;
	
	location {
		# 负载均衡
		proxy_pass http://集群名;
	}
}

fair

upstream 集群名 {
	# 判断当前哪一个服务器响应时间最短就选择哪一个
	fair;
	server ip:port;
	server ip:port;
	server ip:port;
}
server {
	listen 80;
	server_name *.*;
	
	location {
		# 负载均衡
		proxy_pass http://集群名;
	}
}

安装拓展模块

# 到nginx解压包下
./configure  --prefix=/etc/nginx --add-module=fair模块路径

make
# 到objs目录下
mv /usr/local/nginx/sbin/nginx  nginx.bak
cp nginx /usr/local/nginx/sbin/

跨域

 location / {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' '*';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            ...
}

限流

漏桶

控制访问的速率

http {
    # 配置请求速率限制  请求不能超过10m 每秒10个请求
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

    server {
        ...
        location / {
            # 应用请求速率限制  burst表示设置一个大小为1的缓冲区,将超过的访问频次方法到缓冲区中 nodelay 如果缓冲区超过了直接返回503 没有设置就等待排队
            limit_req mylimit burst=5 nodelay;
        }
    }
}

令牌桶

处理突发的请求数量

http {

    limit_conn_zone $binary_remote_addr zone=perip:10m;
    limit_conn_zone $binary_remote_addr zone=perserver:10m;

    server {
        ...
        location / {

            # 应用连接数限制  限制单个ip最多能链接10个连接
            limit_conn perip 10 nodelay;
            # 能处理的并发连接总数
            limit_conn perserver 100 nodelay;

            ...
        }
    }
}

部署一个Vue项目

image.png image.png image.png

标签:http,nginx,ip,server,Nginx,location,port
From: https://blog.51cto.com/u_15497049/7141654

相关文章

  • Nginx的安装以及相关代理配置
    前言什么是NginxNginx是一个高性能的HTTP和反向代理Web服务器,同时也提供IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器。Nginx的特点是:占有内存少,并发能力强。Nginx专门为性能优化而开发,性能是最重要的考量,非常注重效率......
  • nginx根据ip的地理位置进行转发代理(GeoIP2)
    nginx要获取到ip地理位置,需要在nginx引用第三方ngx_http_geoip2_module模块,而ngx_http_geoip2_module模块依赖libmaxminddb;另外ip对应的地理位置离线的需要从GeoIP2站点上下载下来;最后在nginx.conf文件中引用ngx_http_geoip2_module模块,配置离线数据库才可以获取地理位置nginx......
  • 深入探究 Nginx 负载均衡与反向代理
    在现代Web应用中,处理高并发和确保可用性是至关重要的。Nginx是一个强大的开源服务器,可以作为负载均衡器和反向代理来提供性能优化和高可用性。本文将深入探讨Nginx的负载均衡和反向代理原理,以及如何在后端架构中应用它。负载均衡的原理负载均衡是将传入的请求分发到多个服务器......
  • nginx报错: nginx: [error] open() "/opt/nginx/nginx.pid" failed (2: No such file
    出现故障的原因:nginx:[error]open()"/opt/nginx/nginx.pid"failed(2:Nosuchfileordirectory)   服务器重启后,重新启动nginx报错nginx.pid这个文件找不到了!       因为每次重新启动系统,nginx.pid被自动删除。解决方案:    重新生......
  • #yyds干货盘点#FastDFS配置Nginx访问
    下载相关依赖软件包yum-yinstallwgetmakezlibzlib-develgcc-c++libtoolopensslopenssl-develwgethttp://nginx.org/download/nginx-1.10.2.tar.gztar-xzvfnginx-1.10.2.tar.gz安装Nginxcdnginx-1.10.2./configure--prefix=/data/apps/nginx-download\--p......
  • nginx 过滤相关的referer 和 origin
    1.相关配置如下location/{#set$allow_cors0;##判断不为空#if($http_origin){#set$allow_cors1;#}#set$flag0;valid_referers10.800;......
  • Nginx文件名逻辑漏洞复现CVE-2013-4547
    Nginx文件名逻辑漏洞复现CVE-2013-4547前置知识本次针对的是中间件NginxNginx是什么?Nginx(发音为“engine-x”)是一个高性能的开源Web服务器软件。它以异步事件驱动的方式处理客户端请求,具有占用资源少、处理并发连接能力强和稳定性高等特点。Nginx还可以用作反向代理服务器......
  • Nginx支持websocket的配置详解
     目录一、对wss与nginx代理wss的理解:二、Nginx支持websocket的配置一、对wss与nginx代理wss的理解:1、wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。2、利用nginx代理wss【通讯原理及流程】客户端发起wss连接连到nginxnginx......
  • nginx把http迁移到https
    买的证书是阿里云提供的server{#HTTPS的默认访问端口443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。listen443ssl;#填写证书绑定的域名server_name<yourdomain>;#填写证书文件名称ssl_certificate......
  • Linux-Nginx-重新编译添加新模块---with-stream
    1.前期#查看上次编译的模块nginx-V2.源码包编译进入对应版本的源码包,之前已经删除可以重新下载wgethttps://nginx.org/download/nginx-1.22.1.tar.gz--with-stream#带上之前的参数./configure--prefix=/usr/local/environment/nginx1.22--with-http_stub_status......