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.gztar -xvf nginx-1.25.2.tar.gzapt-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
makemake 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 {# 这行设置了每个工作进程的最大连接数为1024worker_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;# 这行将请求代理到上游服务器组liaoproxy_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 countcount += 1print(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 countcount += 1print(count, 8001)# 发送响应体  response_message = "Hello, World!"  self.wfile.write(response_message.encode())# 创建服务器对象并绑定地址和端口号  
server = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)  
print('Server started http://localhost:8000')  

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode24-找到两个数组中的公共元素(2956)

1、题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;它们分别含有 n 和 m 个元素。 请你计算以下两个数值&#xff1a; 统计 0 < i < n 中的下标 i &#xff0c;满足 nums1[i] 在 nums2 中 至少 出现了一次。 统计 0 < i < m 中的下标 i &…

Docker安装Nginx并部署MySQL容器构建

一.MySQL容器的构建 1.创建MySQL根目录及配置文件夹&data文件夹 mkdir -p mysql/{conf,data} 2.上传配置文件 将配置文件上传到conf文件夹&#xff08;数据库配置文件已放到置顶资源中&#xff09; 3.命令构建MySQL容器 /soft/mysql/conf/my.cnf:/etc/my.cnf目录为我们…

CSS实现的 Loading 效果

方式一、纯CSS实现 代码&#xff1a;根据需要复制 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>CSS Animation Library for Developers and Ninjas</title><style>/* ---------------…

Dubbo服务暴露机制解密:深入探讨服务提供者的奥秘【九】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Dubbo服务暴露机制解密&#xff1a;深入探讨服务提供者的奥秘【九】 前言服务暴露机制简介服务注册与发现协议选择与拓展动态代理实现结语&#xff1a; 前言 在分布式系统中&#xff0c;服务的暴露是…

【React】Redux的使用详解

文章目录 Redux的三大原则Redux官方图react-redux使用 1、创建store管理全局状态​ 2、在项目index.js根节点引用 3、 在需要使用redux的页面或者组件中&#xff0c;通过connect高阶组件映射到该组件的props中 redux中异步操作如何使用redux-thunkcombineReducers函数 Re…

IPv6自动隧道---6to4隧道

IPv6 over IPv4自动隧道特点 由于IPv4兼容IPv6隧道要求每一个主机都要有一个合法的IP地址,而且通讯的主机要支持双栈、支持IPv4兼容IPv6隧道,不适合大面积部署。目前该技术已经被6to4隧道所代替。 6to4隧道 集手动隧道和自动隧道的优点于一身,提出6to4的目的是为IPv4网络…

目标检测开源数据集——道路坑洼

一、危害 对车辆的影响&#xff1a;道路坑洼会导致车辆行驶不稳&#xff0c;增加车辆的颠簸&#xff0c;不仅影响乘坐舒适度&#xff0c;还可能对车辆的悬挂系统、轮胎等造成损害。长期在坑洼路面上行驶&#xff0c;车辆的减震系统、悬挂系统等关键部件容易受损&#xff0c;进…

【计算机组成与体系结构Ⅱ】多Cache一致性的模拟分析(实验)

实验八&#xff1a;多Cache一致性的模拟分析 一、实验目的 1&#xff1a;加深对多 Cache 一致性的理解。 2&#xff1a;进一步掌握解决多 Cache一致性的目录协议和监听协议的基本思想。 3&#xff1a;掌握在各种情况下&#xff0c; 目录协议和监听协议是如何工作的&#xf…

Jupyter Notebook

2017年左右在大学里都听说过Jupyter Notebook&#xff0c;并且也安装用了一段时间&#xff0c;后来不知道什么原因没有用了。估计是那时候写代码的时候多一些&#xff0c;因为它可以直接写代码并运行结果&#xff0c;现在不怎么写代码了。 介绍 后缀名为.ipynb的json格式文件…

雍禾植发为地球种下发际线,雍禾医疗以公益名义为消费者种下希望

“绿水青山才是金山银山”&#xff0c;绿色现已成为新时代中国的鲜明底色。天更蓝&#xff0c;水更清&#xff0c;人与环境和谐发展已深入人心。位于内蒙古自治区阿拉善盟西部的额济纳旗常年干旱少雨&#xff0c;风沙肆虐&#xff0c;这里亟需被植上一片森林&#xff0c;为地球…

Grind75第9天 | 733.图像渲染、542.01矩阵、1235.规划兼职工作

733.图像渲染 题目链接&#xff1a;https://leetcode.com/problems/flood-fill 解法&#xff1a; 可以用深度优先搜索和广度优先搜索。 深度优先搜索。每次搜索到一个方格时&#xff0c;如果其与初始位置的方格颜色相同&#xff0c;就将该方格的染色&#xff0c;然后继续对…

AI嵌入式K210项目(11)-SPI Flash读写

文章目录 前言一、K210的SPI二、Flash介绍三、实验过程总结 前言 这一章我们来学习下SPI及其应用&#xff0c;SPI 是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;由于其高速、同步和简单的特性&#xff0c;被广泛应用于各种微控制器和外围设备之间的通…