nginx入门学习

nginx简介

nginx 是什么?用来干嘛的

通俗解释:客户端向服务器请求时,提供让多个服务器一起处理请求的东西

是一个反向代理服务器,能够提供负载均衡,和进行反向代理的功能


 

正向代理&反向代理

客户端向代理服务器请求,代理服务器帮忙去云端拿数据(因为客户端无法直接访问服务器)

隐藏客户端ip,提升访问速度

代理服务接受客户端的请求,而不是让外部直接连接到server

隐藏服务器ip,服务器负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。

内置策略为轮询,加权轮询,Ip hash。

扩展策略,就天马行空,只有你想不到的没有他做不到的。

动静分离,在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

iphash:iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

(一般用redis解决session共享的问题,因为服务器挂了session就没了)

nginx安装与配置

官网地址  nginx: download

windows

下载,双击运行

浏览器输入localhost,有下面的页面说明启动成功了

linux(Debian/Ubuntu)

  • 使用预先构建的二进制文件: 这种方法是最简单和快速的方法。
  • 从源代码构建: 此方法可以自定义需要的第三方模块,这些模块使 Nginx 更加强大。
方式一
sudo apt-get update
sudo apt-get install nginx
ps -ef | grep nginx
sudo ufw allow 'Nginx Full'
systemctl status nginx
service nginx status

方式二

参考:

基于Ubuntu系统Nginx的两种安装方式_ubuntu安装nginx-CSDN博客

官网下载,或者选择版本,赋值url

 wget http://nginx.org/download/nginx-1.25.2.tar.gz

 tar -xvf nginx-1.25.2.tar.gz

apt-get install -y gcc
sudo apt-get install -y gcc
sudo apt-get install -y libpcre3 libpcre3-dev
sudo apt-get install -y zlib1g zlib1g-dve
sudo apt-get install -y zlib1g zlib1g-dev
sudo apt-get install -y ipenssl
sudo apt-get install -y openssl
sudo apt-get install -y libssl-dev
./configure
make

make install

现在只能   /usr/local/nginx/sbin/nginx 
或者    /usr/local/nginx/sbin/nginx -s reload  stop 这种用法


建立软连接 前面是解压的目录  后面是shell命令的目录,加了后就能   sudo nginx来用

sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/

注意:

./configure可以指定 安装的nginx的配置文件和可执行程序的路径

若没有指定有默认值(例如配置文件读的是/usr/local/nginx/conf/nginx.conf

而不是源代码路径下的

--prefix:指定最终安装到的目录  默认值 /usr/local/ngnix

--sbin-path:用来指定可执行文件目录:默认的是 sbin/nginx

--conf-path:用来指定配置文件目录:默认的是 conf/nginx.conf

nginx使用

windows下:如果要用命令行需要先把 nginx 安装目录添加到环境变量 Path 中,避免找不到路径,开始右键-》系统-》高级系统设置-》环境变量

Nginx常用命令

  1. cd /usr/local/nginx/sbin/
  2. ./nginx 启动
  3. ./nginx -s stop 停止
  4. ./nginx -s quit 安全退出
  5. ./nginx -s reload 重新加载配置文件
  6. ps aux|grep nginx 查看nginx进程

问题查询会使用的命令

  1. # 开启
  2. service firewalld start
  3. # 重启
  4. service firewalld restart
  5. # 关闭
  6. service firewalld stop
  7. # 查看防火墙规则
  8. firewall-cmd --list-all
  9. # 查询端口是否开放
  10. firewall-cmd --query-port=8080/tcp
  11. # 开放80端口
  12. firewall-cmd --permanent --add-port=80/tcp
  13. # 移除端口
  14. firewall-cmd --permanent --remove-port=8080/tcp
  15. #重启防火墙(修改配置后要重启防火墙)
  16. firewall-cmd --reload
  17. # 参数解释
  18. 1、firwall-cmd:是Linux提供的操作firewall的一个工具;
  19. 2、--permanent:表示设置为持久;
  20. 3、--add-port:标识添加的端口;

nginx核心学习

详解Nginx的核心原理 - 哔哩哔哩

https://www.cnblogs.com/firstdream/p/6728290.html

nginx实践实例

1,nginx配置文件

# 这行设置了Nginx的工作进程数为1。工作进程是处理请求的线程。
worker_processes  1; 


# 这个块定义了Nginx的事件处理设置
events {
    # 这行设置了每个工作进程的最大连接数为1024
    worker_connections  1024;
}

# 这个块定义了HTTP服务器的设置
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # 这个块定义了一个上游服务器组,名为liao。它有两个服务器,
    # 一个是localhost:8000,权重为1;另一个是localhost:8001,权重为2。
    # 权重决定了处理请求的优先级。
    upstream liao {
        server localhost:8000 weight = 1;
        server localhost:8001 weight = 2;
    }
    
    # 这个块定义了一个HTTP服务器。
    server {
        listen       80;
        server_name  localhost;
        
        # 这个块定义了根目录下的文件和目录的请求处理方式。
        location / {
            root   html;
            index  index.html index.htm;
            # 这行将请求代理到上游服务器组liao
            proxy_pass http://liao;
        }
        # 当发生500、502、503或504错误时,Nginx会返回位于根目录下的50x.html文件
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

2,python服务器代码demo

运行起来后,8000端口有请求就会返回消息并打印日志

from http.server import BaseHTTPRequestHandler, HTTPServer  

count = 1

# 自定义的请求处理类  
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    
    def do_GET(self):  
        # 打印请求内容  
        # print(f"Request URL: {self.path}")  
        # print(f"Headers: {self.headers}")  

        # 发送响应状态码和响应头  
        self.send_response(200)  
        self.send_header('Content-type', 'text/html')  
        self.end_headers()
        print("get")
        global count
        count += 1
        print(count, 8000)
        # 发送响应体  
        response_message = "Hello, World!"  
        self.wfile.write(response_message.encode())

    def do_POST(self):
        # 发送响应状态码和响应头  
        self.send_response(200)  
        self.send_header('Content-type', 'text/html')  
        self.end_headers()
        print("POST")
        global count
        count += 1
        print(count, 8001)
        # 发送响应体  
        response_message = "Hello, World!"  
        self.wfile.write(response_message.encode())


# 创建服务器对象并绑定地址和端口号  
server = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)  
print('Server started http://localhost:8000')  

参考了很多资料,如有侵权,联系删除

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

短剧分销系统,助力短剧市场发展,实现短剧收益

近几年来,我国短剧兴起,在经过几年的蓄力后迎来了爆发期,短剧市场规模一路狂飙!短剧拥有节奏快、剧情“爽”的优势,成功占领了各大观众的碎片化时间,短剧已经成为了影视行业的新力量,也成为了当…

微服务概述之微服务特性

前言 既然系统采用了微服务架构,就需要了解一些微服务的特性,这样在进行微服务开发时,脑海中才会有一些指导方向。微服务具有以下特性。 1. 服务组件化 组件是独立、可替换、可升级的软件的单元。将整体应用拆分成独立的服务组件后&#xff…

嵌入式软件开发对硬件知识的掌握要求要多高?

嵌入式软件开发对硬件知识的掌握要求要多高? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家&#xff0…

并发编程(一)线程基础知识与线程控制

进程与线程 进程:如任务管理器中各种程序叫做正在运行的进程。对于操作系统来说,仅仅是一个数据结构,并不真实的执行代码 线程:真实执行代码的 每个进程启动的是时候会同步启动一个主线程即main函数,当main函数结束…

倒F天线设计经验分享

一、IFA天线理论分析 为了改善ILA天线难以使用的缺点,在ILA天线的基础上再增加一个倒L结构,形成IFA天线,此种天线体积小、易于匹配并具有双极化的特点,而在蓝…

帆软报表11.0.19增加postgres数据源方案

项目使用postgres数据库,帆软报表集成开发时需要手工增加该数据源。 https://help.fanruan.com/finereport/doc-view-2563.html 但增加数据源后测试报告无此驱动,经查看文档,现在是通过驱动管理来上传, 但新版又不允许上传驱动JAR…

外贸群发邮件最好的软件?群发软件哪个好?

外贸开发信群发软件推荐?做外贸用什么邮件群发软件? 在外贸业务中,与潜在客户建立联系并保持沟通是至关重要的。那么,如何快速有效地发送邮件给大量的潜在客户呢?这就涉及到了外贸群发邮件。蜂邮EDM来探讨一下&#x…

presto/trino 入门介绍实战

引言 Presto是一款分布式SQL查询引擎,它能够在大规模数据集上实现快速、交互式的查询。本文将介绍Presto的基本概念并结合一些实际的代码示例,能够让的大家快速入门并在实际项目中应用。 官网:Launch Presto: Local download, JDBC, Docker…

11.云原生分布式数据库之TIDB

云原生专栏大纲 文章目录 为什么使用TIDB后端视角运维视角基础架构视角 TiDB Operator 简介软件版本要求部署tidbTIDB工具helm常用命令TIDB学习推荐资料 为什么使用TIDB 从后端视角、运维视角和基础架构视角来看,使用 TiDB 作为数据库系统可以获得分布式架构、高可…

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

云原生微服务之分布式锁框架 Redisson

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项目…

动物多指标生理监测:ZL-019A大小鼠饮食饮水监测系统

ZL-019A大小鼠饮食饮水监测系统是一款能够实时监测和分析动物的饮食、饮水、站立、活动量和活动轨迹等行为和代谢过程的智能系统。 本系统旨在定期测量实验动物的饮食饮水摄入行为,用户可根据需要自定义测量时间。通过定期测量,研究者无需再费心记录单个…

代码随想录 Leetcode454. 四数相加 II

题目&#xff1a; 代码 (首刷看解析 2024年1月15日&#xff09;&#xff1a; class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {int n nums1.size();u…

【干货】数字化工厂常见术语合集

本文将为大家介绍一些行业通俗名称&#xff0c;希望对于从事“数字工厂”行业的朋友以及正在求职的朋友们有所助益。 数字化工厂&#xff08;"Digital factory"&#xff0c;简写为"DF"&#xff09;&#xff1a;是指利用先进的信息技术和数字化解决方案&am…

关于如何禁用、暂停或退出OneDrive等操作,看这篇文件就够了

​想知道如何禁用OneDrive?你可以暂停OneDrive的文件同步,退出应用程序,阻止它在启动时打开,或者永远从你的机器上删除该应用程序。我们将向你展示如何在Windows计算机上完成所有这些操作。 如何在Windows上关闭OneDrive 有多种方法可以防止OneDrive在你的电脑上妨碍你。…

AI自动写文章的软件有哪些?分享五款实用的

据相关数据统计&#xff0c;AI自动写文章的软件逐渐成为了现实。这些写作软件利用强大的自然语言处理和机器学习算法&#xff0c;能够自动生成文章&#xff0c;为写作工作提供了极大的便利。在本文中&#xff0c;我将向大家介绍五款实用的AI自动写文章的软件&#xff0c;一起来…

打破效率瓶颈:运用Excel提升文秘与行政工作质量

文章目录 一、数据整理二、数据分析三、报表制作四、图表展示五、模板应用六、宏编程七、安全与隐私《Excel高效办公&#xff1a;文秘与行政办公&#xff08;AI版&#xff09;》编辑推荐内容简介作者简介目录获取方式 在现代企业中&#xff0c;文秘与行政办公人员的工作内容繁杂…

文件批量重命名:如何给文件自定义名称,大量文件重命名的方法

在日常生活和工作中&#xff0c;经常要处理大量的文件&#xff0c;例如把文件重命名。手动重命名每个文件不仅耗时&#xff0c;而且容易出错。现在一起来看云炫文件管理器如何按自定义名称批量给文件重命名的技巧。 文件名自定义名称前后缩略图对比。 用自定义名称批量重命名…

Unity 编辑器篇|(五)编辑器拓展GUILayout类 (全面总结 | 建议收藏)

目录 1. 前言2. 参数3. 功能3.1 按钮&#xff1a;Button、RepeatButton3.2 文本&#xff1a;Label、TextArea、TextField、PasswordField3.3 工具栏&#xff1a;Toolbar3.4 切换框&#xff1a;Toggle3.5 滚动条&#xff1a;HorizontalScroll 、VerticalScroll3.6 滑条&#xff…

优思学院|质量管理五大工具和七大手法要点总结|2024

在现代企业管理中&#xff0c;质量管理是核心竞争力的重要组成部分。它不仅关系到产品的品质&#xff0c;更直接影响到企业的市场信誉和经济效益。本文将深入探讨质量管理中的五大工具及七大手法&#xff0c;这些工具和手法都贯穿了六西格玛DMAIC五步的方法论之中&#xff0c;是…