1、安装nginx
基于centOS 7.x安装。
其实也可以安装在docker上,但是docker有个天然的劣势就是对于文件的管理不是很优秀,而nginx刚好需要做文件替换,文件下载这些操作;第二个原因就是装nginx这台服务器,基本上只安装nginx,不安装别的软件,所以没有必要安装docker
1、下载nginx
下载地址:
http://nginx.org/en/download.html
2、解压nginx安装包
上传文件到 /usr/local/nginx 里,然后解压。
tar -zxvf nginx-1.22.1.tar.gz
3、安装nginx
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
1、执行configure命令
./configure
这个命令是用来检查本地环境是否可以安装nginx,缺少哪些环境会给出提示。并生成MakeFile文件,用于安装。
执行后多会输出没有C编译环境,安装一下C环境即可。
C compiler cc is not found
【解决办法,下面这些命令一个一个执行可以,一堆一起执行也可以】
yum install -y openssl*
yum install -y ncurses-devel
yum install -y make zlib-devel gcc c++ libtool openssl openssl-devel
./configure
==上面安装命令都安装完了后,在执行一下 ./configure,就跟刚才不一样了。
2、执行make命令
执行完上面的三个命令之后,查看一下是否生成了MakeFile文件,生成后执行如下编译安装命令:
make install
make install命令执行后开始安装nginx,输出如下图代表安装完成。
4、启动nginx
1、查找nginx位置并启动
whereis nginx
conf:配置文件
html:页面文件
logs:日志文件
sbin:可执行文件
2、常用命令
# 启动nginx
./nginx
# 停止nginx
./nginx -s stop
# 重新加载配置文件
./nginx -s reload
# 查看nginx进程
ps aux|grep nginx
【启动nginx:】
【查看nginx进程:】
启动成功后,在宿主机访问nginx,nginx的端口号默认配置是80。
2、反向代理
作用:
- 通过反向代理可以增加安全性,减少后台服务被攻击的隐患
- 通过缓存的方式可以增加静态资源响应效率
- 通过反向代理实现负载均衡
1、介绍反向代理配置
配置文件在conf目录下的nginx.config文件中。
1、基础配置
介绍nginx.conf配置文件内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server { #--只需要关注server的配置--
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
} #--只需要关注server的配置--
}
listen:监听哪个端口
server_name:给这个服务取一个名字
location:反向代理的配置
error_page:错页面
root:静态资源的根目录
index:欢迎页,默认的请求页面
2、详细介绍location指令
做反向代理映射地址的
location [ = | ~ | ~* ] uri {
}
=:精确匹配,请求地址必须和uri相同才会进入这个location
~:模糊匹配,只要符合uri规则就会进入了这个location
~*:不区分大小写的模糊匹配
2、反向代理配置案例二则
【实现nginx代理百度】
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://www.baidu.com;
}
}
修改完配置文件后,要重新加载一下配置文件
# 重新加载配置文件
./nginx -s reload
【结果是:访问nginx,显示的是百度。】
【实现nginx代理tomcat】
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.1.173:8080;
}
}
}
proxy_pass:反向代理的地址。这个配置的地址最后可以用“/”结尾的,也可以不用“/”结尾,有很大区别。
区别:
有正斜杠代理时会代理到根目录,举例说明:
创建一个html页面:
粘贴到tomcat/webapps/abc文件夹里去:
访问一下123.html页面。
修改一下配置文件:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / { ##之前配置文件里有的
root html;
index index.html;
}
location /abc {##意思是说,只有访问/abc的时候,再给我代理到tomcat上;没访问/abc,访问别的 别给我代理tomcat。
proxy_pass http://192.168.1.173:8080/;
}
}
}
修改完配置文件后,要重新加载一下配置文件
# 重新加载配置文件
./nginx -s reload
请求地址:http://192.168.1.173/abc/123.html
没有正斜杠时,代理后的地址是http://192.168.1.173:8080/abc/123.html
proxy_pass http://192.168.1.173:8080;
有正斜杠时,代理后的地址是http://192.168.1.173//123.html,由此会导致404问题
proxy_pass http://192.168.1.173:8080/;
在实际工作中,两种都有可能用到,注意区别。
3、负载均衡
1、配置hello集群
创建一个【java项目】的springboot工程:
打包(install):
虚拟机创建新目录:
通过命令启动两个服务,注意两个服务端口号要不同,并且要能通过请求区分出两个服务。
java -jar XXX.jar #启动java项目的
2、nginx负载均衡
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream hw { ## 负载均衡配置
server 192.168.1.173:88;
server 192.168.1.173:99;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://hw;
}
}
}
upstream:负载均衡配置,内部可以配多个server
proxy_pass:代理到hw这个负载均衡配置
修改完配置文件后,要重新加载一下配置文件
# 重新加载配置文件
./nginx -s reload
nginx的负载均衡支持多种模式,最常见的是以下三种:
-
轮询:平均分配,逐一做负载,是默认的方式
-
权重:可以设置一个权重值,让某一个服务被分配做负载的比例增大
【访问的时候,显示88 端口1次,99端口两次】(不够智能)
upstream hw { server 192.168.1.173:88 weight=1; server 192.168.1.173:99 weight=2; }
-
ip_hash:对发送请求过来的ip地址进行hash计算,得到值会分配给upstream中配置的服务,且相同的ip访问计算的结果相同,就会被分配到同一个服务中。【这样做的好处是,实现session共享的问题,可以保证同一个ip地址不会被负载均衡到其他项目里,而导致拿不到session。】
upstream hw { ip_hash; server 192.168.1.173:88; server 192.168.1.173:99; }
同一个IP,无论访问多少次,都是显示同一个内容。(不够智能)
喜欢这期内容的话,别忘了点个赞,关注博主,这样就不会错过任何更新啦!还有,收藏一下,方便以后回顾哦!