nginx超详细入门!

2022-12-18 0 374

责任编辑如是说如前所述 Linux 控制系统的 nginx 加装和单纯采用

1、加装

1.1、加装 nginx 倚赖的自然环境

采用 nginx 须要倚赖许多其他的库,因此须要先准备好此基础自然环境

# 校对 nginx 须要倚赖 gcc yum install gcc-c++ # 程序语言全力支持 yum install -y pcre pcre-devel # gzip 数据压缩全力支持 yum install -y zlib zlib-devel # https 全力支持 yum install -y openssl openssl-devel

1.2、浏览 nginx 加装包

通常浏览到/usr/local/产品目录方可,能间接去非官方浏览

,再上传至相关联产品目录。

也能间接在相关联目中继续执行如下表所示指示浏览:
wget -c https://nginx.org/download/nginx-1.18.0.tar.gz

1.3、加装 nginx

Cogl就很单纯了:

tar -zxvf nginx-1.18.0.tar.gz

接着步入Cogl后的产品目录(/usr/local/nginx-1.18.0),实用性 nginx:

./configure

假如须要全力支持 https,则须要继续执行如下表所示的实用性指示:

./configure –with-http_ssl_module

实用性顺利完成后,已经开始校对 nginx 源代码:

make

校对顺利完成后,已经开始加装 nginx:

make install

等待加装顺利完成……

加装顺利完成后,会生成一个和nginx-1.18.0产品目录同级的nginx产品目录,就是加装程序的产品目录。

1.4、启动 nginx

步入/usr/local/nginx/sbin产品目录

启动 nginx:
./nginx

启动后在浏览器输入服务器地址,能看到如下表所示页面就好了:

nginx超详细入门!
关闭 nginx,采用如下表所示一个指示方可:
# 正常关闭 ./nginx -s quit # 暴力关闭 ./nginx -s stop
重启 nginx:
# 通常是修改实用性文件后重启 ./nginx -s reload
查看 nginx 进程:
ps aux|grep nginx

2、单纯采用

这里主要是对/usr/local/nginx/conf/中nginx.conf文件进行相关的实用性

2.1、静态代理

先在/opt/software下创建test产品目录,里边放一个index.html,内容是:

<h1>Hello World</h1>

接下来对nginx.conf做如下表所示修改:

server { listen 8081; server_name localhost; location / { root /opt/software/test; index index.html; } }

重启 nginx:

./nginx -s reload

在浏览器测试:

nginx超详细入门!

上边我们修改了server部分的实用性,这样当访问 http://192.168.2.100:8081/index.html时,nginx 会去/opt/software/test下找index.html。

由于index默认实用性成了index.html,因此访问 http://192.168.2.100:8081会默认去找index.html,和上边的效果一样。

server模块相对于实用性了一个站点,能有多个;listen实用性的是端口号,能根据需求修改;server_name设置的是本机的地址,通常不须要修改;location模块则是指定站点要代理的静态资源、或者要转发的请求。

2.2、请求转发

添加一个新的server模块,采用proxy_pass实用性要转发到的目标服务地址:

server { listen 8082; server_name localhost; location / { proxy_pass http://192.168.3.2:1114/; } }

注意目标地址末尾有个斜杠,不加斜杠就无法正常的转发请求了。

重启 nginx。

目标地址上有一个hello接口:

@RestController public class HelloController { // 服务的端口号 @Value(“${server.port}”) Integer port; @GetMapping(“/hello”) public String hello() { return “hello world” + “#” + port; } }

这样当请求 http://192.168.2.100:8082/hello 时请求会转发到 http://192.168.3.2:1114/hello 上:

nginx超详细入门!

2.3、负载均衡

上边我们只部署了一个目标服务,假如目标服务是以集群部署的,则能采用 nginx 实现负载均衡,将请求转发到不同的服务节点上。这里我们模拟一个服务集群,将服务启动两次:

java -jar provider-0.0.1-SNAPSHOT.jar –server.port=1114 java -jar provider-0.0.1-SNAPSHOT.jar –server.port=1115

最终有两个服务节点:192.168.3.2:1114、192.168.3.2:1115。

niginx 默认的负载均衡策略是轮询,将请求轮流分发到不同服务器;还有权重+轮询,就是增加了不同服务器被轮询到的概率;最后是iphash,对客户端请求的ip进行hash操作,根据hash结果将客户端请求分发给同一台服务器处理,也能一定程度上解决session不共享的问题,但不常用。

接着实用性 nginx, 核心就是upstream指令:

# 实用性集群中各个服务地址,给它们起一个统一的名字 provider upstream provider { server 192.168.3.2:1114; server 192.168.3.2:1115; } server { listen 8083; server_name localhost; location / { # 采用 provider 代替服务地址 proxy_pass http://provider/; } }

重启 nginx。

当多次请求 http://192.168.2.100:8083/hello 时,请求会轮询转发到不同的目标服务上:

nginx超详细入门!
nginx超详细入门!

2.4、登录验证

有时候为了安全起见,保护数据,在访问 nginx 代理的资源之前,须要先进行登录验证。

首先须要加装htpasswd工具,指示如下表所示:

yum install -y httpd-tools

接下来采用 htpasswd 工具来设置登录的用户名、密码,在/usr/local/nginx/conf/产品目录下继续执行如下表所示指示:

htpasswd -c passwd admin

最终的用户名、密码会保存到名为passwd的文件中,admin是登录的用户名,继续执行指示后会提示输入密码:

nginx超详细入门!

查看 passwd 文件的内容,admin:后的内容就是加密后的密码:

nginx超详细入门!

关于 htpasswd 更详尽的内容这里就不如是说了。

生成好了用户名、密码,接下来就是修改 nginx 实用性文件,在server模块添加如下表所示实用性:

server { # 登录失败返回的提示信息 auth_basic “Please Login”; # 指定保存用户名、密码的文件路径,这里采用的是相对路径,也能采用绝对路径 /usr/local/nginx/conf/ auth_basic_user_file passwd; }

这样访问当前站点代理的资源时,就都须要输入用户名、密码了:

nginx超详细入门!

也能只给server中指定的location实用性auth_basic、auth_basic_user_file,这样只有访问相关联location实用性的资源代理时才须要登录验证。

2.5、前后端分离项目部署

在采用前后端分离模式开发项目时,前后项目打包后能采用 nginx 来代理:

# 实用性后端服务地址 upstream myserver { server 192.168.2.100:8848; } server { listen 8084; server_name localhost; location / { proxy_pass http://myserver/; proxy_redirect default; } location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff|html) { # 实用性前端打包后的项目路径 root /opt/software/test4/; } }

也是比较单纯的,在root实用性的产品目录中存放前端打包好的源代码,upstream部分实用性的是后端服务地址。

作者:SheHuan

链接:https://www.jianshu.com/p/bb11f1435f88

关于如何学习Java,一方面须要不断的去学习,把此基础知识学扎实,另一方面也要认识到java的学习不能仅仅靠理论,更多的是靠实操,因此要多练习多做项目,在实践中学习才是最好的学习方法。很多人刚已经开始不知道怎么去学习,这里我和大部分都来自好朋友整理的一份《JavaCodeHub面试突击》,里面包含的内容实在是太全面了,真的很能考察出一名应聘者的成色。

JavaCodeHub

我是终端研发部的小于哥

面试过很多很多应聘者,说实话, 现在面试要求可真高,虽然工作拧螺丝,但面试还是造火箭的。很多东西我们不光要会用,也要懂其原理。在战术上一定要重视,方能百战不殆!假如有帮助,欢迎点赞!

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务