Nginx搭建以及使用(linux)

news2024/11/28 12:38:05

1.概念

        Nginx是一个高性能的HTTP和反向代理服务器,它可以用来处理静态文件,负载均衡,反向代理等功能。
        Nginx的来历是这样的:它是由俄罗斯人伊戈尔·赛索耶夫为Rambler.ru站点开发的,第一个公开版本发布于2004年10月4日。
        Nginx的优点有:
                 1. 配置简洁,易于维护
                 2.静态处理性能高,占用内存少,支持高并发
                 3.支持多种负载均衡策略,如轮询,权重,IP绑定等
                 4.支持热部署,不间断服务
                 5.支持多语言通用服务器
        Nginx的缺点有:
                1.对动态请求的处理需要配合其他后端服务器,如PHP-FPM,Tomcat等
                2.模块相对较少,不如Apache丰富
                3.对Windows支持不太好

        正向代理是指客户端通过代理服务器来访问外部网络,代理服务器将客户端的请求转发给目标服务器,并将获得的内容返回给客户端。正向代理可以隐藏客户端的真实身份,为客户端提供访问控制,缓存等功能。
        反向代理是指外部网络通过代理服务器来访问内部网络,代理服务器将请求转发给后端服务器,并将获得的结果返回给外部网络。反向代理可以隐藏后端服务器的真实身份,为后端服务器提供负载均衡,安全防护,缓存等功能。

        Nginx作为反向代理服务器的工作流程

                1.客户端给服务器发送请求,连接服务器,用户不知道服务器地址,只有反向代理服务器的地址是公开的
                2.请求直接发给反向代理服务器
                3.反向代理服务器将请求转发给后边的web服务器web服务器 N台反向代理服务器转发请求会轮询进行
                4. web服务器收到请求进行处理,得到结果
                5. web服务器将处理结果发送给反向代理服务器
                6.反向代理服务器将拿到的结果转发给客户端

2.工具下载

        使用Nginx需要用到的工具有 pcre库,zlib库,OpenSSL库

             pcre库下载地址:这里

             zlib库下载地址:这里

             OpenSSL库下载地址:这里

             Nginx下载地址:这里

下载好这些包需要上传到服务器,进行解压下载

3.解压安装

        一下面几个包为例

         1.解压安装pcre-8.40.tar.bz2文件

顺序执行以下命令
a.	tar -jxvf pcre-8.40.tar.bz2
b.	cd pcre-8.40/
c.	./configure
d.	make
e.	sudo make install

        2.解压安装zlib-1.2.11.5.tar.gz文件

顺序执行以下命令
a.	tar -zxvf zlib-1.2.11.tar.gz
b.	cd zlib-1.2.11/
c.	./configure
d.	make
e.	sudo make install

        3.解压安装openssl-1.0.1t.tar.gz文件

顺序执行以下命令
a.	tar -zxvf openssl-1.0.1t.tar.gz
b.	cd openssl-1.0.1t/
c.	./config
d.	make
e.	sudo make install

        4.解压安装nginx-1.10.1.tar.gz 文件

顺序执行以下命令
a.	tar -zxvf nginx-1.10.1.tar.gz
b.	cd nginx-1.10.1/
c.	./configure
d.	make
e.	sudo make install

解压之后

注意:在安装nginx文件时如果使用来工作需要同时安装依赖,使用如下命令

#指定了安装目录,以及依赖
sudo ./configure --sbin-path=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.40 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.1t

指定了安装目录在 /usr/local/nginx 下,以及启动文件 nginx 也在该目录下

安装后的目录

 在执行make或者make install命令时,如果出现 all warnings being treated as errors 的问题,表示把警告信息当成错误信息,可以使用如下命令

make -no-warings-are-errors
sudo make install -no-warings-are-errors
  • nginx安装也可以使用 apt-get命令
#使用apt-get命令安装
sudo apt-get install nginx
# nginx文件安装完成之后的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
  • nginx的启动关闭命令
#查看nginx的启动转态
ps aux|grep nginx
#启动命令,需要进入到/usr/local/nginx文件下使用
sudo ./nginx
#重新加载
sudo ./nginx -s reload
#停止命令
sudo ./nginx -s stop

#以下是使用yum命令安装时使用的命令
# 要停止Nginx服务,请运行:
sudo systemctl stop nginx
# 要再次启动,请键入:
sudo systemctl start nginx
# 重新启动Nginx服务:
sudo systemctl restart nginx
# 在进行一些配置更改后重新加载Nginx服务:
sudo systemctl reload nginx
# 如果你想禁用Nginx服务在启动时启动:
sudo systemctl disable nginx
# 并重新启用它:
sudo systemctl enable nginx
  • nginx配置文件,这里使用了上面安装依赖以及路径的的命令,需要下载tar.gz文件上传服务器,
user www-data;    #所属用户(权限),可以设置为root
worker_processes auto;    #设置连接的最大线程数
pid /run/nginx.pid;        #在 /run/ 目录下生成pid文件
include /etc/nginx/modules-enabled/*.conf;

# nginx的事件处理
events {    
    use epoll;    #添加该行表示多路IO转接模型使用epoll
	worker_connections 768;    #最大连接数
	# multi_accept on;
}

http {

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;
	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;
	gzip on;
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;

    server{
        listen         80;         #绑定的端口号
        server_name    localhost;  #设定的域名
        charset        utf8;       #编码
        # \ 表示一个指令,相当于 \index.html
        location \ { #处理客户端的请求
            root html; #表示查找的根目录,都是相对于 /usr/local/nginx 目录
           }
        # \hello 表示一个目录
        location \hello\ {
            root html;
           }
        location \upload\ {
            root html;
            index upload.html;#默认打开的网页
           }       
}

作为web服务器配置实例

  • 作为反向代理服务器

存在三个角色:

        1.客户端:使用浏览器作为客户

        2.反向代理服务器:windows下的nginx配置文件

        3.web服务器:使用上面ubuntu中配置好的nginx服务器

  ->配置windows下nginx文件

需要在官网上下载nginx包,以下中随便一个都行

解压出来

 在当前目录右击鼠标在->终端打开,输入下面命令启动服务器

配置方向代理服务器文件,进入conf目录,打开nginx.conf文件,添加以下内容

server {#需要代理几台服务器就需要添加几个server模块
    listen       80;	#客户端反向代理服务器,代理服务器监听的端口
    server_name  test.com;	#域名

location / {
	#反向代理服务器转发指令, http:// 固定
    proxy_pass http://robin.test.com;
   }

   }
#添加一个代理模块
upstream robin.test.com
{
	server 192.168.71.128:80;
}

具体内容

本地host所在的目录->C:\Windows\System32\drivers\etc,需要使用管理员打开host文件

配置内容如下:

  • 负载均衡配置
    反向代理的中间产物
    server{
    	listen 80;
    	server_name test1.com;
    	location \ {
    		porxy_pass http://test1.com;
    	}
    }
    upstream test1.com{
    	server 192.168.247.135:80;
    }
    server{
    	listen 80;
    	server_name test2.com;
    	location \ {
    		porxy_pass http://test2.com;
    	}
    }
    upstream test2.com{
    	server 192.168.247.250:80;
    }
    反向代理变成负载均衡配置项
    server{
    	listen 80;
    	server_name localhost;
    	location \ {
    		proxy_pass http://linux.com
    	}
    }
    upstream linux.com{
    	server 192.168.247.135:80 weight=2;
    	server 192.168.247.250:80 weight=1;
    }

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

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

相关文章

java的构造方法

构造方法是 Java中最重要的方法,也是 Java语言中最基本的方法,它直接影响程序的结构。java中不允许重复使用构造方法,但可以重复使用构造函数。 1. Java中只有构造函数可以使用被调用方提供的参数(如: int)…

作为一名8年测试工程师,因为偷偷接私活被····

接私活 对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场合讨论私活的问题,似乎都在避嫌。就跟有人下班后…

Linux进程通信——共享内存

共享内存 共享内存原理与概念函数接口的介绍与使用shmgetshmctlshmatshmdt通信 共享内存的特点共享内存的内核结构 system V消息队列(了解)system V——初识信号量信号量的预备概念理解信号量信号量的接口与结构 IPC资源的组织方式 共享内存 原理与概念…

在 Edge 中安装 Tampermonkey 的步骤

以下是在 Edge 中安装 Tampermonkey 的步骤: 目录 1. 打开 Edge 浏览器,进入 Tampermonkey 官网:[https://www.tampermonkey.net/](https://www.tampermonkey.net/)。2. 点击页面上方的“下载”按钮,选择“Microsoft Edge”选项。…

2.2.2 redis,memcached,nginx网络组件

课程目标: 1.网络模块要处理哪些事情 2.reactor是怎么处理这些事情的 3.reactor怎么封装 4.网络模块与业务逻辑的关系 5.怎么优化reactor? io函数 函数调用 都有两个作用:io检测 是否就绪 io操作 1. int clientfd accept(listenfd, &addr, &…

BigInteger和BigDecimal

BigInteger 当一个整数很大,大到long都无法保存,就可以使用BigInteger这个类 使用方法:new import java.math.BigInteger;//记得引包 BigInteger bigInteger new BigInteger("33333333333399999999999");//用字符串传入 System…

STM32物联网实战开发(6)——PWM驱动LED灯

PWM驱动LED灯 之前是使用标准库函数配置引脚输出PWM控制呼吸灯,因为开发板上的蜂鸣器是有源的,所以这次还是用来确定LED灯,这次使用的是HAL库,用CubeMX软件初始化PWM功能 PWM输出原理 Period:周期,单位是秒…

10个最流行的向量数据库【AI】

矢量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。 每个向量都有一定数量的维度,范围从几十到几千不等,具体取决于数据的复杂性和粒度。 推荐:用 NSDT场景设计器 快速搭建3D场景。 矢量数据库&…

手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)

短信验证码登录功能 项目分析核心代码1.外部js库调用2.HTML容器构建3.javaScript业务逻辑验证4.后端验证逻辑 总结 短信验证码是通过发送验证码到手机的一种有效的验证码系统,作为比较准确和安全地保证购物的安全性,验证用户的正确性的一种手段&#xff…

Redux的基本使用,从入门到入土

目录 一、初步使用Redux 1.安装Redux 2.配置状态机 二、Redux的核心概念 1.工作流程 2.工作流程 三、优化Redux 1.对action进行优化 2.type常量 3.reducer优化 四、react-redux使用 1.安装react-redux 2.全局注入store仓库 3.组件关联仓库 五、状态机的Hook 1.u…

Day958.代码的分层重构 -遗留系统现代化实战

代码的分层重构 Hi,我是阿昌,今天学习记录的是关于代码的分层重构的内容。 来看看如何重构整体的代码,也就是如何对代码分层。 一、遗留系统中常见的模式 一个学校图书馆的借书系统。当时的做法十分“朴素”,在点击“借阅”按钮…

如何使用osquery在Windows上实时监控文件?

导语:Osquery是一个SQL驱动操作系统检测和分析工具,它由Facebook创建,支持像SQL语句一样查询系统的各项指标,可以用于OSX和Linux操作系统。 Osquery是一个SQL驱动操作系统检测和分析工具,它由Facebook创建,…

不得不说的行为型模式-责任链模式

目录 责任链模式: 底层原理: 代码案例: 下面是面试中可能遇到的问题: 责任链模式: 责任链模式是一种行为型设计模式,它允许多个对象在一个请求序列中依次处理该请求,直到其中一个对象能够…

【VM服务管家】VM4.0平台SDK_2.5 全局工具类

目录 2.5.1 全局相机:全局相机设置参数的方法2.5.2 全局相机:获取全局相机列表的方法2.5.3 全局通信:通信管理中设备开启状态管理2.5.4 全局通信:接收和发送数据的方法2.5.5 全局变量获取和设置全局变量的方法 2.5.1 全局相机&…

经典重装上阵,更好用的中小手游戏鼠标,雷柏V300W上手

日常办公、玩游戏都需要用到鼠标,特别是对于游戏玩家来说,一款手感好、易定制的鼠标,绝对是游戏上分的利器。早先雷柏出过一款V300鼠标,距今已有10年历史,当时是很受欢迎,最近南卡又出了一款复刻版的V300W&…

为什么不要相信AI机器人提供的健康信息?

自从OpenAI、微软和谷歌推出了AI聊天机器人,许多人开始尝试一种新的互联网搜索方式:与一个模型进行对话,而它从整个网络上学到的知识。 专家表示,鉴于之前我们倾向于通过搜索引擎查询健康问题,我们也不可避免地会向Ch…

linux下的权限管理

1.shell概念 当我们在进入正文前先给大家普及一些基础概念。 广义上来讲,linux 发行版 linux内核 外壳程序(这个外壳程序就相当于 windows gui(窗口图形),linux 常用的shell 是 bash) 所以&#xff0c…

vue基本语法

目录 一、模板语法 (1)文本 (2)原始HTML (3)属性Attribute (4)使用JavaScript表达式 二、条件渲染 (1)v-if,v-else (2&#x…

nodejs+vue+elementui学生毕业生离校系统

学生毕业离校系统的开发过程中。该学生毕业离校系统包括管理员、学生和教师。其主要功能包括管理员:首页、个人中心、学生管理、教师管理、离校信息管理、费用结算管理、论文审核管理、管理员管理、留言板管理、系统管理等,前台首页;首页、离…

stm32 CubeMx 实现SD卡/sd nand FATFS读写测试

stm32 CubeMx 实现SD卡/SD nand FATFS读写测试 文章目录 stm32 CubeMx 实现SD卡/SD nand FATFS读写测试1. 前言2. 环境介绍2.1 软硬件说明2.2 外设原理图 3. 工程搭建3.1 CubeMx 配置3.2 SDIO时钟配置说明3.2 读写测试3.2.1 添加读写测试代码 3.3 FATFS文件操作3.3.1 修改读写测…