前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0到1学习Nginx(一)

从0到1学习Nginx(一)

作者头像
我是胖虎啊
发布2022-06-27 18:05:04
3410
发布2022-06-27 18:05:04
举报
文章被收录于专栏:测试开发卷货

基本概念

  1. nginx是什么,做什么事情? 「Nginx 高性能的HTTP和反向代理服务器」 特点是 占用内存少,并发能力强。事实上nginx的并发能力在同类型的网页服务器中表现较好。转为性能优化开发,能经受主高负载的考验,有报告表明,能支持高达50000个并发连接数.

本篇文章的知识来源于教学视频总结 + 自己总结的一些经验 教学视频地址: https://www.bilibili.com/video/BV1zJ411w7SV?p=1

  1. 下载地址 方式1:linux上运行(亲测下载挺快的) wget http://nginx.org/download/nginx-1.20.2.tar.gz

方式2: 打开下载网址: http://nginx.org/en/download.html, 选择喜欢的版本去下载

  1. 编译部署

参考文章: https://www.cnblogs.com/herui1991/p/8996917.html(「其中有些坑需要注意!」)

代码语言:javascript
复制
1. 安装依赖环境:
yum -y install gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl openssl-devel libtool

2. 解压压缩包:
tar zxvf nginx-1.20.2.tar.gz

3. 进入解压目录: 
cd nginx-1.20.2

4. 编译ngnix: 
./configure  --prefix=/usr/local/nginx  --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log  --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre

5. 生成nginx服务: 
make && make install

6.运行测试
cd /usr/local/nginx/sbin
./nginx 
ps -ef|grep nginx    如果看到ngnix在运行, 说明编译完成

「坑1」 按照帖子编译出来的nginx,./nginx运行时,出现报错: nginx: [emerg] getpwnam("nginx") failed 「解决方法」: 编译安装nginx的时候(运行./configure这个很长的命令时)指定了--user=nginx和--group=nginx,去除就对了(「我上面写的./configure命令是去除后的, 可直接使用」)

「坑2」 我在实际操作过程中遇到个报错:

「解决方法」: 看报错是缺少一个文件夹,创建好就行 cd /var/tmp/nginx mkdir nginx

  1. 正向代理介绍
  1. 反向代理 客户端对代理无感知, 因为客户端不需要任何配置就可以访问. 我们只需要将请求发送到反向代理服务器,由反向代理服务器取选择目标服务器获取数据后,返回给客户端.此时 反向代理服务器 和 目标服务器对外就是一个服务器, 暴露的是代理服务器的地址, 「隐藏了真实服务器ip地址」

常用命令

代码语言:javascript
复制
启动: ./nginx


查看版本:  ./nginx -v      当前使用的版本为 1.20.1


关闭 nginx
./nginx -s stop


重新加载 nginx   主要用于修改配置文件后, 重新加载配置文件(类似于热部署)
./nginx -s reload

实际演示示例(2个)

「将客户端的访问, 通过nginx反向代理到tomcat」

  1. 首先准备好tomcat环境, 下载地址: https://tomcat.apache.org/
  2. 内网部署好tomcat, 确保可以正常访问, 下面记录下关键步骤:
  • 首先确定要确保准备占用的端口是哪个, tomcat默认的端口是8080.可修改默认端口(),
代码语言:javascript
复制
cd /usr/local/apache-tomcat-8.5.73/conf  
vim server.xml , 修改图示地方的端口号

「关于vim快速查询关键字的小技巧」 vim 文件名后,使用 /port ,回车即可定位到关键字第一个出现的位置,按 "n"可定位到下一个关键字位置,按"N"可往上查找关键字的位置

  • 启动tomcat cd /usr/local/apache-tomcat-8.5.73/bin sh startup.sh

「验证是否启动成功」 方法1:浏览器访问 http://ip:8090 方法2: ps -ef|grep tomcat

  • 配置nginx cd /usr/local/nginx/conf vim nginx.conf 将原来的配置注释掉, 使用箭头对应的配置即可
  • 使nginx重新加载配置文件 ./nginx -s reload
  • 「验证反向代理效果」 假设nginx所在机器ip为192.168.100.100, 使用的port是80(默认端口) 浏览器访问 http://192.168.100.100:80 此时就会跳转到tomcat的网站页面

「nginx作为反向代理,根据访问路径,跳转到不同端口的服务中」

预期效果如下:

访问http://127.0.0.1:80/edu/a.html, 跳转到127.0.0.1:8090, 访问对应的a.html资源 访问http://127.0.0.1:80/vod/a.html, 跳转到127.0.0.1:8091, 访问对应的a.html资源

  1. 首先准备一个新的tomcat环境, 我的操作是:
代码语言:javascript
复制
1.拷贝一个新的tomcat环境
cp -r apache-tomcat-8.5.73 apache-tomcat-8.5.73-1 

2.修改新tomcat环境的端口号(注意要修改2个地方!)
<Connector port="8091" protocol="HTTP/1.1"  原来是8090, +1

<Server port="8006" shutdown="SHUTDOWN">  原来是8005, +1
  1. 准备资源
代码语言:javascript
复制
首先在第1个tomcat(使用8090端口)的指定目录创建资源
cd /usr/local/apache-tomcat-8.5.73/webapps/ROOT
mkdir edu
vim a.html   内容:  <h1>8090-edu</h1>


在第2个tomcat(使用8091端口)的指定目录创建资源
cd /usr/local/apache-tomcat-8.5.73-1/webapps/ROOT
mkdir vod
vim a.html   内容:  <h1>8091-vod</h1>

  1. 启动新的tomcat cd /usr/local/apache-tomcat-8.5.73-1/bin sh startup.sh
  2. 验证启动 假设服务器ip是 192.168.100.100 浏览器访问 http://192.168.100.100:8091 此时预期会跳转到tomcat的网站页面
  3. 配置nginx

vim nginx.conf, 增如下的配置

代码语言:javascript
复制
    server {
        listen       9001;

        server_name  127.0.0.1;

        location ~ /edu/ {
            proxy_pass http://127.0.0.1:8090;
        }
        location ~ /vod/ {
            proxy_pass http://127.0.0.1:8091;
        }

    }

配置说明: 如果访问路径带有/edu,那么nginx就会反向代理到 http://127.0.0.1:8090/edu, 另一个同理

改为配置后,记得重新加载配置: ./nginx -s reload 6. 测试效果 http://192.168.16.122:9001/edu/a.html

http://192.168.16.122:9001/vod/a.html

「调试技巧:」

  1. 建议配置好单个tomcat后,先分别访问一下, 是不是单独就能访问到预期的资源,如前面配置的tomcat1资源,就可以先用 http://127.0.0.1:8090/edu/a.html 先单独调试下这个服务的正确性
  2. 如果访问失败,可以排查下防火墙的相关原因
  3. 可以结合「nginx的日志」去分析一些问题, 因为当前使用的nginx是自己编译的, 所以咱们要看下编译时指定的路径,咱们的./configure 这个命令中指定了 --http-log-path=/var/log/nginx/access.log, 所以访问nginx的日志会存储在/var/log/nginx/access.log, 咱们可以通过「查看日志命令」: tail -5f /var/log/nginx/access.log(实时查看最后5条日志)来实时的打印出前端的访问请求
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发卷货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本概念
  • 常用命令
  • 实际演示示例(2个)
    • 「将客户端的访问, 通过nginx反向代理到tomcat」
      • 「nginx作为反向代理,根据访问路径,跳转到不同端口的服务中」
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档