Nginx安装以及具体应用

news2024/10/5 14:06:52

文章目录

    • Centos7安装Nginx
    • Nginx命令
    • Nginx具体应用
      • 反向代理
    • location指令说明
      • 负载均衡
      • 动静分离
    • Nginx.conf配置详解

Centos7安装Nginx

下载地址:nginx: download
中间这个就是tar.gz包
在这里插入图片描述

Centos7安装Nginx

  • 下载nginx-1.16.1.tar.gz
  • 上传到Centos7中的/user/local目录下
  • 安装Nginx依赖的包
  • yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
  • 解压 tar -zxvf nginx-1.16.1.tar.gz
  • 在/user/local创建一个目录 mkdir -p /user/local/nginx
  • 在/usr/local/nginx-1.16.1目录下执行configure./configure --prefix=/usr/local/nginx
  • 安装 make && make install

检查配置文件正确性
在/usr/local/nginx/sbin目录下执行./nginx -t
在这里插入图片描述

启动Nginx
在/usr/local/nginx/sbin目录下启动nginx

./nginx

防火墙开启80端口

就能访问到Nginx首页了

image-20220810174511499

Nginx命令

(1)启动命令:在/usr/local/nginx/sbin目录下执行 ./nginx
(2)关闭命令:在/usr/local/nginx/sbin目录下执行 ./nginx -s stop
(3)重新加载命令:在/usr/local/nginx/sbin目录下执行 ./nginx -s reload
(4)查看版本:在/usr/local/nginx/sbin目录下执行 ./nginx -v
(5)查看进程:ps -ef|grep nginx

Nginx具体应用

反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获取目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无需在用户端做出任何设定。

配置反向代理:

    server {
        listen       82;
        server_name  localhost;
        location / {
      proxy_pass http://192.168.205.1:8080; #反向代理配置,将请请求转发到指定服务
    }

当我们192.168.205.1:80 就会转发到=>http://192.168.205.1:8080

如果location配置如下:

    server {
        listen       80;
        server_name  localhost;
       location ~ /tom/ {
       proxy_pass http://127.0.0.1:8080; #反向代理配置,将请请求转发到指定服务
}

访问192.168.205.1:80/tom/index.html就会访问=>192.168.205.1:8080/tom/index.html

location指令说明

该指令用于匹配 URL。
语法如下:

1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~
标识。

负载均衡

配置负载均衡
upstream称为上游服务器,即真实处理请求的业务服务器。

upstream targetserver{
#定义一组服务器
server 192.168.205.1:8080;
server 192.168.205.1:8081;
}
server{
listen 8080;
server_name localhost;
location / {
proxy_pass http://targetserver;
}
}
名称说明
轮询默认方式
weight权重方式
ip_hash依据ip分配方式
least_conn依据最小连接方式
url_hash依据url分配方式
fair依据响应时间方式

解释:

①轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
②weight
weight代表权,重默认为1,权重越高被分配的客户端越多
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:

upstream server_pool{   
server 192.168.10.1 weight=1;    
server 192.168.10.2 weight=2; 
server 192.168.10.3 weight=3;   
}

③ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如:

upstream server_pool{   
ip_hash;    
server 192.168.10.1:80;   
server 192.168.10.2:80;  
server 192.168.10.3:80;  
}

④fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool{   
server 192.168.10.1:80;    
server 192.168.10.2:80;
server 192.168.10.3:80;
fair;    
}

其他参数:
在这里插入图片描述

动静分离

Nginx 动静分离简单来说就是把动态请求跟静态请求分开,Nginx 处理静态请求,Tomcat处理动态请求。
动静分离从目前实现角度来讲大致分为两种:

  • 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;
  • 另外一种方法就是动态跟静态文件混合在一起发布,通过
    nginx 来分开。 通过 location 指定不同的后缀名实现不同的请求转发。

将a.jpg放到tom文件夹下:
通过反向代理访问http://192.168.242.66/tom/a.jpg
=>http://192.168.242.66:8080/tom/a.jpg

Nginx.conf配置详解

Nginx配置文件(conf/nginx.conf)整体分为三个部分:

全局块:和Nginx运行相关的全局配置

events块:和网络连接相关的配置

http块:代理、缓存、日志记录、虚拟主机配置

  • http全局块
  • Server块

servler全局块
location块

#安全问题,建议用nobody,不要用root.
#user  nobody;
 
#worker数和服务器的cpu数相等是最为适宜
worker_processes  2;
 
#work绑定cpu(4 work绑定4cpu)
worker_cpu_affinity 0001 0010 0100 1000
  
#error_log path(存放路径) level(日志等级) path表示日志路径,level表示日志等级,
#具体如下:[ debug | info | notice | warn | error | crit ]
#从左至右,日志详细程度逐级递减,即debug最详细,crit最少,默认为crit。 
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
 
events {
    worker_connections  1024;  
 
    #这个值是表示nginx要支持哪种多路io复用。
    #一般的Linux选择epoll, 如果是(*BSD)系列的Linux使用kquene。
    #windows版本的nginx不支持多路IO复用,这个值不用配。
    use epoll;
 
    # 当一个worker抢占到一个链接时,是否尽可能的让其获得更多的连接,默认是off 。
    multi_accept on; //并发量大时缓解客户端等待时间。
    # 默认是on ,开启nginx的抢占锁机制。
    accept_mutex  on; //master指派worker抢占锁
}
http {
    #当web服务器收到静态的资源文件请求时,依据请求文件的后缀名在服务器的MIME配置文件中找到对应的MIME Type,再根据MIME Type设置HTTP Response的Content-Type,然后浏览器根据Content-Type的值处理文件。
    include       mime.types;  #/usr/local/nginx/conf/mime.types
 
    #如果 不能从mime.types找到映射的话,用以下作为默认值-二进制
    default_type  application/octet-stream;
 
     #日志位置
     access_log  logs/host.access.log  main;
 
     #一条典型的accesslog:
     #101.226.166.254 - - [21/Oct/2013:20:34:28 +0800] "GET /movie_cat.php?year=2013 HTTP/1.1" 200 5209 "http://www.baidu.com" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider"
     #1)101.226.166.254:(用户IP)
     #2)[21/Oct/2013:20:34:28 +0800]:(访问时间) 
     #3)GET:http请求方式,有GET和POST两种
     #4)/movie_cat.php?year=2013:当前访问的网页是动态网页,movie_cat.php即请求的后台接口,year=2013为具体接口的参数
     #5)200:服务状态,200表示正常,常见的还有,301永久重定向、4XX表示请求出错、5XX服务器内部错误
     #6)5209:传送字节数为5209,单位为byte
     #7)"http://www.baidu.com":refer:即当前页面的上一个网页
     #8)"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; #.NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider": agent字段:通常用来记录操作系统、浏览器版本、浏览器内核等信息
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                       '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    #开启从磁盘直接到网络的文件传输,适用于有大文件上传下载的情况,提高IO效率。
    sendfile        on; //大文件传递优化,提高效率
   
    #一个请求完成之后还要保持连接多久,0表示完成请求后直接关闭连接。默认:75s
    keepalive_timeout  60s; 
 
    #开启或者关闭gzip模块, 文件压缩,再传输,提高效率
    #gzip  on ; 
 
    #设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。
    #gzip_min_lenth 1k;
 
    # gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)
    #gzip_comp_level 4;
 
    #匹配MIME类型进行压缩,(无论是否指定)"text/html"类型总是会被压缩的。
    #gzip_types types text/plain text/css application/json  application/x-javascript text/xml   
 
    #动静分离
    #服务器端静态资源缓存,最大缓存到内存中的文件,不活跃期限
    open_file_cache max=655350 inactive=20s;   
   
    #活跃期限内最少使用的次数,否则视为不活跃。
    open_file_cache_min_uses 2;
 
    #验证缓存是否活跃的时间间隔 
    open_file_cache_valid 30s;
    
    upstream  myserver{
        # ip_hash;
        server 192.168.161.132:8080 weight=1;
        server 192.168.161.132:8081 weight=1 backup;
        #hash $request_uri
        #hash_method crc32
    }
 
    server {
        #监听端口号
        listen       80;
        #服务名
        server_name  192.168.137.129;
        #字符集
        #charset utf-8;
        location / {   #匹配任何查询。
            root   html;#资源查找位置。         /user/local/nginx/html
            #默认访问首页索引文件的名称
            index  index.html index.htm;
            #反向代理路径
            proxy_pass http://myserver;
            #反向代理的超时时间
            proxy_connect_timeout 10;
            proxy_redirect default;
         }
          #普通匹配
        location  /images/ {    
                    root images ;
        }
         #反正则匹配
         location ^~ /images/jpg/ {  # 匹配任何以 /images/jpg/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试。 
                      root images/jpg/ ;
         }
         #正则匹配
         location ~*.(gif|jpg|jpeg)$ {       
                      #所有静态文件直接读取硬盘
                      root pic ;
                      #expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
                      expires 3d; 
         }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        } 
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1412501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论述Python中列表、元组、字典和集合的概念

Python列表是用于存储任意数目、任意类型的数据集合,包含多个元素的有序连续的内存空间,是内置可变序列,或者说可以任意修改。在Python中,列表以方括号([ ])形式编写。 Python元组与Python列表类似&#x…

实验:MySQL 客户端SocketTimeout 抓包分析

实验准备 服务端环境准备 服务器信息 阿里云 99 大洋白嫖机 $ cat /proc/version Linux version 5.15.0-83-generic (builddlcy02-amd64-027) (gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #92-Ubuntu SMP Mon Aug 14 09:30:42 UT…

JAVA架构图的设计与画法

日常的工作中,假如你身边坐了一个女程序猿,为了让乏味的工作氛围增加点提神的荷尔蒙,文艺又懂点技术的你可能会对她说:小姐姐,我能把世间万物抽象成一个类,但唯独不能抽象你,你在我眼里美的那么…

Cortex-M4处理器 故障处理

故障处理 故障是异常的子集,故障产生的原因有: 总线错误:指令获取或向量表加载;数据访问。内部检测到的错误,如未定义指令试图从标记为永不执行(XN)的内存区域执行指令。如果您的设备包含MPU&…

学习MySQL仅此一篇就够了(DATAGRIP连接Linux以及索引结构详解)

索引 datagrip远程连接linux 首先在要在Linux端安装MySQL linux端操作: mysql> create user root% identified with mysql_native_password by Wyxbuke00.; Query OK, 0 rows affected (0.01 sec)mysql> grant all on *.* to root%; Query OK, 0 rows aff…

Linux/Uinx 系统编程:进程管理(1)

Linux/Uinx 系统编程:进程管理(1) 文章目录 Linux/Uinx 系统编程:进程管理(1)什么是进程进程来源INIT 和 守护进程登录进程sh进程进程的执行模式进程管理的系统调用关于syscall中参数b,c&#x…

蓝桥OJ3694肖恩的投球游戏plus

二维差分 #include<bits/stdc.h> using namespace std;const int N 1e3 5; int a[N][N],d[N][N];int main() {int n, m, q;cin >> n >> m >> q;for (int i 1 ; i < n; i){for (int j 1; j < m; j){cin >> a[i][j];d[i][j] a[i][j] a…

3dmax效果图渲染失败原因有哪些?

在3ds Max可创建复杂场景的模型&#xff0c;效果图渲染是完成建模后的最重要一步。不少设计师与是和艺术家追求的目标都不一样。然而&#xff0c;成功渲染出高质量的图像可能面临多种挑战&#xff0c;从硬件性能限制到软件设置瑕疵&#xff0c;都有可能导致效果图渲染失败。此外…

六、VTK创建箭头vtkArrowSource

将圆柱体附加到圆锥体以形成箭头。 vtkArrowSource 旨在用作字形的源。轴座始终位于 (0,0,0)。箭头尖端始终位于 (1,0,0)。如果“反转”为真,则两端翻转,即尖端在 (0,0,0) 而基部在 (1, 0, 0)。锥体和轴的分辨率可以设置并默认为 6。可以设置锥体和轴的半径,默认…

选择排序(堆排序和topK问题)

选择排序 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据元素排完 。 如果我们用扑克牌来举例&#xff0c;那么选择排序就像是提前已经把所有牌都摸完了&#xff0c;而再进行牌…

新能源汽车智慧充电桩解决方案:移动便捷的充电服务

自从我国提出"新基建"以来&#xff0c;充电基础设施产业也成为行业的话题与关注焦点。"十三五"期间&#xff0c;我国充电基础设施实现了跨越式发展&#xff0c;标准体系逐步完备&#xff0c;产业生态稳步形成。国务院《新能源汽车产业发展规划&#xff08;…

C++---string类

一.string类&#x1f357; C支持C风格的字符串&#xff0c;另外还提供了一种 字符串数据类型&#xff1a; string是定义在头文件string中的类&#xff0c;使用前需要包含头文件string。 #include<string> C语言中的字符串需要引用头文件#include<string.h> #includ…

VRRP6协议--负载均衡配置

VRRP6负载均衡 VRRP6负载均衡指的是创建多个备份组,多个备份组同时承担数据转发的任务,对于每一个备份组,都有自己的Master和若干Backup设备。 VRRP6负载分担与VRRP6主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP6备份组,都包含一个Master设备和若干Ba…

《WebKit 技术内幕》学习之十四(2):调式机制

2 实践——基础和性能调试 Chromium开发者工具基本上沿用了Web Inspector的功能&#xff0c;所以这一节主要以该开发者工具作为介绍的对象&#xff0c;一起了解开发者工具提供的功能和一些基本的用法&#xff0c;有些用法其实在之前已经介绍过&#xff0c;这里可能为了系统性考…

Kettle-Docker部署+Sqlserver数据同步Mysql+Start定时任务

一. 背景介绍 1. ETL是什么 ETL&#xff08;Extract-Transform-Load&#xff09;&#xff0c;即数据抽取、转换、装载的过程。它是一种思想&#xff0c;主要是说&#xff0c;从不同的数据源获取数据&#xff0c;并通过对数据进行处理&#xff08;格式&#xff0c;协议等转换&a…

网安培训第一期——sql注入+文件

文章目录 sql inject报错注入time盲注联合查询万能密码拦截和过滤ascii注入流程base64查询的列名为mysql保留关键字key 文件上传ffuf脚本要做的三件事网络端口进程用户权限文件文件包含文件下载XSS跨站请求攻击csrf跨站请求伪造 sql inject 判断输入字段是字符串还是数字 方法…

ShardingSphere之ShardingJDBC客户端分库分表上

目录 什么是ShardingSphere&#xff1f; 客户端分库分表与服务端分库分表 ShardingJDBC客户端分库分表 ShardingProxy服务端分库分表 ShardingSphere实现分库分表的核心概念 ShardingJDBC实战 什么是ShardingSphere&#xff1f; ShardingSphere是一款起源于当当网内部的应…

拼图小游戏的界面和菜单的搭建

package Puzzlegame.com.wxj.ui;import javax.swing.*;public class GameJframe extends JFrame { //游戏主界面 public GameJframe(){//初始化界面initJFrame();//初始化菜单initJmenuBar();//让界面显示出来this.setVisible(true); }private void initJmenuBar() {//创建整个…

强化学习基础(一)

1 初始强化学习 强化学习是机器通过与环境交互来实现目标的一种计算方法。 机器和环境的一轮交互是指&#xff0c;机器在环境的一个状态下做一个动作决策&#xff0c;把这个动作作用到环境当中&#xff0c;这个环境发生相应的改变并且将相应的奖励反馈和下一轮状态传回机器 …

二叉树的构建,遍历等

1.叉树链式结构的实现 1.1前置说明 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能学习其相关的基本操作。 为了方便调试&#xff0c;我直接在主函数中来建立二叉树了&#xff0c;下面是一个简单的二叉树 二叉树节点结构体的定义&#xff…