为什么要学习Nginx?:
安装Nginx的docker-compose.yml
version: '3.1'
services:
nginx:
restart: always
image: 10.9.12.254:5000/nginx:lastest
container_name: nginx
ports:
- 80:80
docker-compose.yml:
version: '3.1'
services:
nginx:
restart: always
image: 10.9.12.254:5000/nginx:lastest
container_name: nginx
ports:
- 80:80
volumes:
- ./conf.d/:/etc/nginx/conf.d/
手动在宿主机的conf.d目录下,编写以.conf为结尾的配置文件:
server{
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
可以保证访问Nginx的首页即可
version: '3.1'
services:
tomcat1:
image: 10.9.12.254:5000/tomcat:8.5.15
container_name: tomcat1
ports:
- 8081:8080
volumes:
- ./webapps1:/usr/local/tomcat/webapps
编写Nginx配置,并重启Nginx:
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://10.9.63.210:8081/;
}
}
客户端访问Nginx,并由Nginx代理到目标服务:
location映射方式:
路径映射方式 | 效果 |
---|---|
location = /路径 | 精准匹配,一旦匹配上,不去匹配其他项 |
location ^~ /路径 | 字符串匹配,一旦匹配上,不去匹配其他项 |
location ^~ /路径 | 正则匹配,匹配上之后,会继续匹配其他项,要么匹配更高优先级,匹配正则最长 |
location ~ /^正则$/ | 正则匹配,效果同上,忽略路径的大小写问题 |
location /路径 | 字符串匹配,使用较多,优先级最低,一般会配置 location / 保证尽量没有404 |
准备两台以上的目标服务器:(测试访问)
version: '3.1'
services:
tomcat1:
image: 10.9.12.254:5000/tomcat:8.5.15
container_name: tomcat1
ports:
- 8081:8080
volumes:
- ./webapps1:/usr/local/tomcat/webapps
tomcat2:
image: 10.9.12.254:5000/tomcat:8.5.15
container_name: tomcat2
ports:
- 8082:8080
volumes:
- ./webapps2:/usr/local/tomcat/webapps
配置Nginx的配置文件:
upstream tomcats{
server 10.9.63.210:8081;
server 10.9.63.210:8082;
# ...
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcats/;
}
}
访问测试。。。
准备两台以上的目标服务器:(测试访问)
version: '3.1'
services:
tomcat1:
image: 10.9.12.254:5000/tomcat:8.5.15
container_name: tomcat1
ports:
- 8081:8080
volumes:
- ./webapps1:/usr/local/tomcat/webapps
tomcat2:
image: 10.9.12.254:5000/tomcat:8.5.15
container_name: tomcat2
ports:
- 8082:8080
volumes:
- ./webapps2:/usr/local/tomcat/webapps
配置Nginx的配置文件:
upstream tomcats{
server 10.9.63.210:8081 weight=100;
server 10.9.63.210:8082 weight=50;
# ...
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcats/;
}
}
访问测试。。。
准备两台以上的目标服务器:(测试访问)
version: '3.1'
services:
tomcat1:
image: 10.9.12.254:5000/tomcat:8.5.15
container_name: tomcat1
ports:
- 8081:8080
volumes:
- ./webapps1:/usr/local/tomcat/webapps
tomcat2:
image: 10.9.12.254:5000/tomcat:8.5.15
container_name: tomcat2
ports:
- 8082:8080
volumes:
- ./webapps2:/usr/local/tomcat/webapps
配置Nginx的配置文件:
upstream tomcats{
ip_hash;
server 10.9.63.210:8081;
server 10.9.63.210:8082;
# ...
}
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcats/;
}
}
访问测试。。。
server{
listen 80;
server_name localhost;
location /html {
root /usr/share/nginx/; # 因为路径携带html,所以或去/usr/share/nginx/html下找静态资源
index index.html;
}
location /img {
root /usr/share/nginx/;
autoindex on; # 访问/img路径时,会以列表的形式展示当前目录下的全部静态资源
}
}