Nginx入门学习

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

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

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值