Skip to main content

moregeek program

nginx与lua(1)-多极客编程

您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~




HTTP服务器是相对于HTTP客户端来说的——HTTP客户端就是各种常用的「浏览器」,如IE、chrome、微信浏览器。

当浏览器通过URL地址栏访问一个Web页面时,会发送一连串请求,或者说HTTP服务器能懂的「语言」,告诉自己需要什么。

HTTP服务器通过解析「请求头」,或者通过静态页面给出内容,或者将客户端需要的内容通过编程语言「计算」出来,然后再返回给浏览器。

HTTP协议只是庞大的TCP/IP协议簇的一部分,HTTP服务器一般情况下是泛指解析包括HTTP协议在内的各种协议的Web服务器,如邮件、文件、DNS等。

如果没特别说明,HTTP服务器和Web服务器通常是一个概念。


那什么是Web容器呢?

C#服务端用的IIS、PHP服务端用的Apache和Java服务端用的Tomcat都属于Web服务器的范畴。但这里面又有不同——

Apache是纯粹的Web服务器,而IIS和Tomcat除了要解析HTTP协议内容之外,还需要处理诸如静态资源、解释/执行JSP/ASP页面标签、组件生命周期等更「专业」的内容。

所以在HTTP服务器/Web服务器之上,把处理这些专业内容的服务称为「容器」。

如果包括更为专业的「服务」,如事务管理、数据库连接池、Bean注入等,则称为「应用服务器」。

综上所述:HTTP/Web服务器 < 容器 < 应用服务器


那什么又是代理呢?

官方的描述:Nginx是一个轻量级、高性能的HTTP和反向代理服务器,同时也提供IMAP/POP3/SMTP这类常见邮件服务。

轻量级、高性能、单线程、非阻塞异步工作模型,最大限度利用Linux本身提供的epoll多路复用技术,配置简单灵活,模块化结构,资源占有率低且利用率高。

说反向代理,就不得不说正向代理。正向代理位于客户端与目标服务器之间,向客户端隐蔽了具体的请求细节,向目标服务器隐蔽了客户端身份,并在二者之间传输/转发信息。

Nginx与LUA(1)_反向代理


因此,Nginx的主要作用也就包括了:

1、作为HTTP/邮件服务器

2、作为反向代理服务器

3、作为负载均衡服务器


安装Nginx:

yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel

yum install -y openssl openssl-devel

cd ~

wget -c https://nginx.org/download/nginx-1.18.0.tar.gz

tar -zxvf nginx-1.18.0.tar.gz

cd nginx-1.18.0

./configure

make && make install

默认安装到/usr/local/nginx/目录

启动:

cd /usr/local/nginx/sbin/

./nginx # 启动

./nginx -s stop # 停止

./nginx -s quit # 退出停止

./nginx -s reload # 重新加载配置文件

开机自启动:

vi /etc/rc.local

增加一行

cd /etc

chmod 755 rc.local

安装好Nginx之后,如果看到这个页面就说明安装成功:

Nginx与LUA(1)_反向代理_02


当只有静态资源的时候,也可以用Nginx来做服务器:

cd /home/work

mkdir www

vi index.html

重新写一个新的index文件

修改/usr/local/nginx/conf/nginx.conf文件

将#user  nobody;改为user  root;

location / {

    root  html;

    index index.html index.htm;

}

改为

location / {

    root  /home/work/www;

    index index.html index.htm;

}


重新加载Nginx:

cd /usr/local/nginx/sbin/

./nginx -s reload

查看结果:

Nginx与LUA(1)_反向代理_03


Nginx实现动静分离也非常简单:根据一定规则把不变的资源和经常变的资源区分开来,就可以根据静态资源的特点将其做缓存或者CDN操作,这就是网站静态化处理的核心思路。

增加新的location:

Nginx与LUA(1)_LUA_04


重新加载Nginx:

cd /usr/local/nginx/sbin/

./nginx -s reload

拷贝一幅图片到/home/work/www目录

访问图片的路径:http://服务器/name.jpeg

和图片类似,css、js等文件都可以这样处理


Nginx最拿手的本事就是反向代理。以Java应用为例,一般都是以8080端口为入口,但如果想改为80端口,就可以用Nginx来「代理」。修改nginx.conf:

server {

    listen        80;

    server_name  localhost;

    client_max_body_size 1024M;


    location / {

        proxy_pass http://localhost:8080;

        proxy_set_header Host $host:$server_port;

    }

}


编写一个简单的Java应用部署并测试。使用带端口的地址(Tomcat):

​http://172.16.185.136:8080/api/v1.0.0/system/test?username=xiangwang​

或者不带端口的地址(Nginx):

​http://172.16.185.136/api/v1.0.0/system/test?username=xiangwang​

都能成功访问。




感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

©著作权归作者所有:来自51CTO博客作者湘王爱娟娟的原创作品,请联系作者获取转载授权,否则将追究法律责任

try-with-resources 语法简介-多极客编程

try-with-resources 语法特点 ①资源说明头()中可以包含多个定义,用分号隔开(最后的分号可以省略)。资源说明头()中定义的每个对象都会在try块的末尾调用其close()。 ②try-with-resources的try块可以独立存在,没有catch或finally都行。 ③实现了AutoCloseable的类都可以使用try-with-resources。 ④资源说明头()中对

13种shell逻辑与算术,能写出5种算你赢!-多极客编程

相较于最初的 Bourne shell,现代 bash 版本的最大改进之一体现在算术方面。早期的 shell 版本没有内建的算术功能,哪怕是给变量加1,也得调用单独的程序来完成。 1、算术方法一: $(( )) 只要都是整数运算,就可以在 $(( )) 的算术表达式内使用所有的标准运算符。还有一个额外的运算符:可以用** 进行幂运算,如下: COUNT=$((COUNT + 5 + MAX * 2

spring boot 3.0横空出世,快来看看是不是该升级了-多极客编程

简介 Spring boot 3.0于2022年11月正式发布了,这次的发布对于我们普通程序员的影响有多少呢?我们是不是需要考虑立马升级到Spring Boot3.0呢? 别急,看完这篇文章再来做决定也不迟。 对JAVA17和JAVA19的支持 相信很多小伙伴到现在还是使用得是JDK8,但是JDK8已经发布很多年了,随着oracle加速JDK版本的发布,现在每半年发布一次,目前最新的JDK版本已经

spring secuirity-多极客编程

简介:Spring Secuirity 是Spring家族中的一个安全管理框架。相比于另一个框架shiro,他提供了更加丰富的功能,社区资源也比市容丰富。一般来说中大型的项目都是使用SpringSecurity来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity, Shiro的上手更加的简单。—般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户

使用file类创建简单的文件目录检索小工具-多极客编程

File类的常用方法 序号 方法描述 1 public String getName() 返回由此抽象路径名表示的文件或目录的名称。 2 public String getParent()****、 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null。 3 public File getParentFile() 返回此抽象路径名的父路径名

shell 命令奇淫技巧,就是有点短-多极客编程

1、在任意目录之间快速移动 你发现自己要在两个或更多目录之间频繁移动,一会切换到这里,一会切换到那里,来回跳转。这些目录之间隔得还挺远,反复输入冗长的路径让人疲惫不堪。 使用内建命令 pushd 和 popd 来管理目录栈,轻松地在目录之间切换。下面是一个简单的示例: $ cd /tmp/tank $ pwd /tmp/tank $ pushd /var/log/cups /var/log/cu

try-with-resources 语法简介-多极客编程

try-with-resources 语法特点 ①资源说明头()中可以包含多个定义,用分号隔开(最后的分号可以省略)。资源说明头()中定义的每个对象都会在try块的末尾调用其close()。 ②try-with-resources的try块可以独立存在,没有catch或finally都行。 ③实现了AutoCloseable的类都可以使用try-with-resources。 ④资源说明头()中对

场景编程集锦 - 捏紧你的钱袋子-多极客编程

1. 场景描述 下面是一通电话的通话内容: 陌生人:“李总,最近还好吗?” 李总:“您是哪一位?” 陌生人:“我的声音听不出来啦?” 李总:“有点耳熟,想不起来。” 陌生人:“猜猜我是谁?” 李总:“想起来啦,你是猪二娃!” 陌生人:“对啊!” 李总:“猪二娃两年前就死啦!” 陌生人狠狠地挂断了电话。   哈哈哈,高手在民间!想必电话那头的陌生人肺都要气炸了。这是一个典型的电信诈骗套路,幽默睿智

13种shell逻辑与算术,能写出5种算你赢!-多极客编程

相较于最初的 Bourne shell,现代 bash 版本的最大改进之一体现在算术方面。早期的 shell 版本没有内建的算术功能,哪怕是给变量加1,也得调用单独的程序来完成。 1、算术方法一: $(( )) 只要都是整数运算,就可以在 $(( )) 的算术表达式内使用所有的标准运算符。还有一个额外的运算符:可以用** 进行幂运算,如下: COUNT=$((COUNT + 5 + MAX * 2

c语言模拟用户输入三次密码并判断是否正确-多极客编程

#include<stdio.h>int main(){ char password[20] = { 0 };//先初始化这个数组避免出现其它数据 int flag = 0;//设立flag变量是若三次密码都输入错误了能向用户输出三次均错误的信息 for (int i = 1; i <= 3; i++) { printf("请输入密码:<"); scan

spring secuirity-多极客编程

简介:Spring Secuirity 是Spring家族中的一个安全管理框架。相比于另一个框架shiro,他提供了更加丰富的功能,社区资源也比市容丰富。一般来说中大型的项目都是使用SpringSecurity来做安全框架。小项目有Shiro的比较多,因为相比与SpringSecurity, Shiro的上手更加的简单。—般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户

场景编程集锦 - 你是谁?-多极客编程

1. 场景描述   或许是近年来电话推销机器人太泛滥了,常常搞得正常的电话销售“灰头土脸”。有人为了验证对方究竟是人还是机器,竟想出来各种各样的奇葩手段。最近一小伙接到了一个汽车推销电话,但他听声音无法判断对方是不是人工客服人员。尽管对方在电话里反复声称自己是“真人”,可男子还是不肯相信,竟然提出让客服人员即兴背诵唐诗《陋室铭》,以此证明自己不是人工智能机器人,令人啼笑皆非。其实在这个场景中涉及