Nginx入门学习

article/2025/10/16 22:06:32

Nginx快速入门

Nginx快速入门,了解什么是Nginx,正向代理,反向代理,负载均衡的概念,学会Nginx的安装和常用的命令,并且能实际场景应用Nginx

什么是Nginx?

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。[来源百度百科]

Nginx作用

Http代理,反向代理:作为web服务器最常用的功能之一,特别是反向代理

正向代理

image-20221007140254282

反向代理

反向代理是代理服务器,举个例子,某一天我朋友的网站突然火了,大量用户请求访问网站,这时该网站只有一台服务器,并发量增大,容易造成瘫痪,这时我们用5台服务器均衡分担访问量,那怎么让大量用户访问10台服务器呢?

这就需要一个反向代理服务器,用户均衡访问这5台服务器,服务器就不会容易崩溃,那么有一个问题每个服务器配置不同,能接受访问量也是不同,如何让用户请求访问分担的承受量到不同服务器呢。

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Iphash。扩展策略,就天马行空,只有你想不到的没有他做不到的。

负载均衡

轮询

image-20221007150846890

加权轮询

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

image-20221007151516707

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

image-20221007151648301

linux服务器下安装

  1. 下载地址:https://nginx.org/en/download.html

  2. 下载在本地目录的压缩包在这里插入图片描述

  3. 因为我使用Xshell,本地文件上传到Linux服务器

apt install lrzsz  # rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具
  1. 运行命令rz,即是接收文件,上传到Linux服务器上

image-20220929113722141

  1. 解压
tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0
  1. 配置,使用默认配置,在Nginx根目录下执行
./configure
make
make install
  1. 查找安装路径
whereis nginx

image-20220929114351380

Nginx常用命令

# Nginx常用命令
cd /usr/local/nginx/sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s quit #安全退出
./nginx -s reload #重新加载配置文件,修改端口一定要重新加载文件

启动成功访问服务器公网ip地址:默认80端口

注意::如果连接不上,检查阿里云安全组是否开放端口,或者服务器防火墙是否开放端口

到这一步,我遇到bug,ip地址访问不了。

遇到bug问题

  1. 一开始还以为是服务器防火墙没有开放80端口,一查确实没有,后面端口开放还是不能访问
cd /usr/local/nginx/sbin
firewall-cmd --query-port=80/tcp #查询是否开放端口
cd /usr/local/nginx/sbin#
firewall-cmd --permanent --add-port=80/tcp #开放80端口
firewall-cmd --permanent --remove-port=80/tcp #移除80端口

image-20220929120442194

  1. 启动nginx,出现这种情况一般是80端口被占用

image-20220930125137504

  1. 启动nginx:404image-20220930124942724
cd /usr/local/nginx
cd conf/
vim nginx.conf

image-20220929152322622
我试得改80端口,重新加载配置文件image-20220929152444908

usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #在nginx.conf路径加载配置文件
systemctl stop firewalld  #关闭防火墙
systemctl disable  firewalld #禁止开机启动
systemctl status firewalld #查看firewalld状态
systemctl start firewalld #开启防火墙/etc/init.d/bt restart #重启宝塔,这里是我公网ip访问不了,才去加载宝塔

systemctl status firewalld #查看firewalld状态,防火墙未启动,这里我们要关闭防火墙

image-20220930122236214

最终解决方式:sudo netstat -lnp|grep 80命令查看80端口占用的进程15683、15762,然后把这两个进程干掉

image-20220930131746290

通过kill命令干掉这两个进程

sudo kill -9 15683
sudo kill -9 15762

./nginx再次启动,成功image-20220930132255534

博客遇到的问题

  • 服务是否正常启动且监听在对应的端口

常见的几个服务启动/重启/开机启动命令如下

Nginx: systemctl start/restar/enable nginx
MySQL: systemctl start/restar/enable mysql/mysqld/mysql-server/mariadb
Apache: systemctl start/restar/enable apache2/httpd
SSH: systemctl start/restar/enable ssh/openssh/sshd

所以您这边8090无法使用,需要有一个程序使用8090,以后您才可以正常使用;例如您网站使用8090 您需要让您提供网站的web服务使用监听8090,才可以让您的网站进行使用

#查找所有容器
docker container ls -all
#容器有重复名字,删除容器
docker container rm halo

image-20221003143015288
image-20221003152505911
解决问题,重启docker,重新在iptables中注册一个链

image-20221003152634206

后来第二天就可以了,真神奇。


http://chatgpt.dhexx.cn/article/4t6iH9wS.shtml

相关文章

Nginx学习

目录 1. Nigix简介1.1 什么是 Nginx?1.2 Nginx的作用?1.3 正向代理和反向代理1.4 Windows上安装Nginx1.5 Linux上安装Nginx 2. Nginx常用命令docker 部署nginx 1. Nigix简介 1.1 什么是 Nginx? Nginx是一个高性能的HTTP和反向代理web服务器(随着客户…

Nginx教程(小白必看,看了必会,不看血亏),

Notice 测试请打开浏览器禁止缓存 Notice:再使用前,请打开浏览器 F12 然后网络 然后点禁用缓存,避免nginx配置后磁盘缓存的情况。而且,请确认host没问题。 备注:你本地设置的host对服务器反向代理后的就没用了 一、介绍 概述 Nginx是lgor…

学习Nginx,看完这篇超详细的文章就够了

目录 本文简介一、Nginx的基本概念1.1、Nginx是什么?1.2、Nginx能帮助我们做些什么?1.3、Nginx的特性 二、Nginx的安装2.1、环境介绍2.2、安装Nginx2.3、Docker安装运行Nginx 三、Nginx的常用命令介绍3.1、操作Nginx【Centos6和7通用】3.2、命令总结 四、…

html img调用js,html调用js变量 如何在html中输出js文件中的变量

html页面代码中怎么调用js变量?html页面代码中怎么调用js变量,例如 在html代码中插入js代码: a=取浏览你把index1.js 中的onReady 去掉,把index1.js改成 function index1() { 请确定他们在一个文件夹下,然后就可以直接调用了 直接把两段代码合并 。 希望能给你帮助。 要实现…

如何在html中使用js

1.使用script标签&#xff0c;将js代码写入标签(html和js没有分离) 在 HTML 中&#xff0c;JavaScript 代码必须位于 <script> 与 </script> 标签之间。 <script>console.log(Number.MAX_VALUE)var s hello worldvar n 10var u undefinedvar l nullvar …

html中script相互调用,HTML调用JavaScript

仅使用HTML和CSS创建动态网页很困难。例如&#xff0c;仅使用CSS是无法很好完成下拉菜单和滑入式页面的&#xff0c;这是一项很难的技术。此时就需要使用JavaScript&#xff0c;那么如何在HTML中调用JavaScript&#xff1f;下面本篇文章就来给大家介绍一下在HTML中调用JavaScri…

html5文档加载前调用函数,html调用javascript外部文件显示函数未定义

在html的head标签中调用了外部js文件&#xff0c;路径没有错&#xff0c;浏览器中也没有报错。但是触发事件调用函数的时候却显示loginWarm函数未定义。怎么回事&#xff0c;查了很久都没有一个正确的解决办法 οninput"setCustomValidity();" οnchange"loginW…

html引入css js,html中如何调用css和js?

html中如何调用css和js&#xff1f;下面本篇文章就来给大家介绍一下在html中调用css和js的方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。 在HTML中调用css的方法 行内样式 在HTML标签的style属性中设定CSS样式 行内样式 内嵌式…

在HTML文档中使用JavaScript的方法详解

在HTML文档中使用JavaScript的方法详解 本文详细介绍&#xff0c;在HTML文档&#xff08;也称为HTML页面或网页&#xff09;中使用JavaScript脚本代码的多种方法。 假设要用JS生成字符☆直角三角形 实现JavaScript代码为&#xff1a; function RightTriangle(){ for(var j1;j&…

html中怎么引用js语言,HTML怎么引用javascript?

仅使用HTML和CSS创建动态网页很困难&#xff1b;例如&#xff0c;仅使用CSS是无法很好完成下拉菜单和滑入式页面的。此时就需要使用JavaScript。下面本篇文章就来给大家介绍一下在html中引用javascript的方法&#xff0c;希望对大家有所帮助。 在HTML中引用JavaScript的方法有两…

html中调用javascript函数,如何在HTML中调用JavaScript函数

如何在HTML中调用JavaScript函数? 在HTML文档中有很多方法可以调用JavaScript函数,这也不是一件容易的事。首先,我们使用了最简单的方法之一来调用HTML文档中的JavaScript函数: 在这种方法中,我们将在HTML文档的头部创建并定义一个函数。要在html文档中调用此函数,我们必…

html怎么引入JavaScript代码

学习了HTML入门教程之后&#xff0c;我们都知道HTML页面是静态的&#xff0c;要实现某些动态效果&#xff0c;就要引入JavaScript。本节课就来给大家讲解一下怎样在HTML页面中引入JavaScript。 这节课不涉及太多编程方面的知识&#xff0c;先给大家说一下引用方式&#xff0c;这…

IOS逆向之frida安装

首先手机要越狱&#xff0c;这个就不说了&#xff0c;博主就是咸鱼搞了个160的苹果6&#xff0c; 自己刷到苹果6支持最新的12.5.7版本后越狱&#xff1b; 谁让他低版本&#xff0c;不支持 CrackerXI砸壳呢&#xff0c;当时你要是使用 frida-ios-dump 也是可以的&#xff1b; …

android ios 逆向工程,iOS 逆向工程--懒人的砸壳方法

iOS 砸壳教程(iOS 9.0) 砸壳后可以对APP进行反编译, 可以看到ipa内头文件, 具体请查看我之前写的:反编译 iOS APP .当然, 关于逆向工程有太多的教程了, 但一般都比较复杂, 本着能偷懒就偷懒, 能不造轮子就不造轮子的坚定理念, 我正努力地学习偷懒... 声明:本文纯粹技术上的探讨…

iOS逆向——带你深入了解LLDB调试

写在前面 日常开发中经常会用到LLDB调试&#xff0c;可能用的最多的命令就是po&#xff0c;而在逆向领域中根本不可能让你在代码中下断点调试&#xff0c;于是乎LLDB就成了非常重要的手段 一、LLDB LLDB&#xff08;Low Lever Debug&#xff09;的缩写&#xff0c;是默认内置…

ios逆向小记

ios逆向小记 定位关键点 抓包 利用charles进行抓包来定位一些关键字符串&#xff0c;其中抓包配置如下&#xff1a; reveal reveal分析图层界面&#xff0c;找到图层所属类&#xff0c;利用frida-trace hook该类进行栈回溯确定关键点&#xff0c;同时可以通过图层类名称来推…

iOS逆向 和班尼特福迪一起攻克难关(unity)

Getting Over It这款游戏发布都五年了&#xff0c;热度也不是那么低&#xff0c;我寻思怎么就没人折腾iOS的goi呢&#xff0c;改个重力啥的我到现在都没发现。。 项目地址 dnSpy il2cppdumper IDA Pro 汇编码转机器码工具 密码:i36p 先从安卓goi里面拿到Assembly-CSharp.dl…

IOS逆向需用到的工具汇总

1、Mac 上自带的一些命令工具 file&#xff1a;查看Mach-O的文件类型 file 文件路径 otool&#xff1a;查看Mach-O特定部分和段的内容 otool -L Mach-O文件 # 查看当前 Mach-O 文件的动态链接库。 lipo&#xff1a;常用于多架构Mach-O文件的处理 查看架构信息&#xff1a;lip…

IOS 逆向分析基础篇

一、环境准备 已经越狱的IOS手机一台&#xff0c;如果使用的是Windows笔记本另外需要mac 虚拟机 1、IOS 手机越狱及环境配置 IOS12.0 以前版本&#xff0c;可以用impactor 写入签名&#xff0c;安装越狱IPA包 IOS 12以上版本&#xff0c;并小于IOS12.1.2&#xff0c;此时需要…

IOS逆向-LLVM、代码混淆

LLVM、代码混淆 1 LLVM1.1 传统编译架构1.2 LLVM的编译架构1.3 Clang1.3.1 什么是Clang1.3.2 Clang与LLVM 2. OC源文件的编译过程2.1 编译过程和预编译2.2 词法分析2.3 语法树-AST2.4中间代码&#xff08;LLVM IR&#xff09; 3. LLVM源码3.1 LLVM的源码下载3.2 源码编译3.2.1 …