nginx简介
(反向代理服务器)有以下三种功能:
- 动静分离:访问java代码请求tomcat服务器,访问静态资源请求静态服务器
- 请求转发 :根据路径匹配到具体服务器 例如地址包含 'aaa’转发到’aaa’服务器,'bbb’转发到’bbb’的服务器
- 负载均衡:在集群的基础上
- 安装
安装
windows版本
下载:
http://nginx.org/en/download.html
例如解压到D:\nginx
打开目录:D:\nginx\nginx-1.20.2,版本看你下载的版本,用cmd打开命令窗口
执行nginx.exe命令
关闭nginx,关闭dos窗口,nginx不会退出,执行nginx.exe -s stop
虚拟机docker版本
安装
docker pull nginx:1.10
docker run -p 80:80 --name nginx -d nginx:1.10
将容器内的配置文件拷贝到当前目录
docker container cp nginx:/etc/nginx . 点不要忘记了
修改文件名称
ls 一下,拷贝出来的是名字叫nginx文件,改成conf文件mv nginx conf
在 /mydata 下创建nginx文件夹,mkdir nginx
把这个 conf 移动到/mydata/nginx 下
终止原容器
docker stop nginx
执行命令删除原容器(ContainerId为nginx的容器id)
docker rm $ContainerId
创建新的 nginx;执行以下命令
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10
完成
功能
反向代理
理解反向代理以及如何引用,引入以下例子
访问地址:
http://gulimall.com/
创建域名
使用SwitchHosts软件,配置一个域名
下载地址,按照教程配置好域名和本地虚拟机ip(ip和gulimall.com)的关系
https://swh.app/
在java代码中写个mvc映射
@Controller
public class IndexController {
//首页
@GetMapping({"/","/index.html"})
public String indexPage(){
//1 业务
return "index";
}
}
找到nginx挂载目录下的nginx.conf
新增上游服务器配置:
upstream gulimall{
#网关微服务地址和ip端口
server 192.168.0.118:88;
}
然后看到一段配置:include /etc/nginx/conf.d/*.conf;意思是包含conf.d和/*.conf的配置,所以在挂载目录下找到
conf.d文件目录,打开看到一个 default.conf配置文件,复制一份名字叫 gulimall.conf文件,修改 vim gulimall.conf 如下:
listen 80;
#监听80端口和域名
server_name gulimall.com;
location / {
#nginx代理给网关,丢失请求的host信息,不然访问gulimall.com 404报错
proxy_set_header Host $host;
#反向代理上游服务器
proxy_pass http://gulimall;
}
java配置网关yml
spring:
application:
name: gulimall-gateway
cloud:
nacos:
discovery:
server-addr: localhost:8848
gateway:
#==============================域名路由=================================
- id: gulimall_host_route
uri: lb://gulimall-product
predicates:
- Host=**.gulimall.com,gulimall.com
server:
port: 88
完成,主启动不要忘记了
动静分离
配置nginx
server{
#先配置好监听端口,然后访问http://192.168.182.130:80就会找静态资源
listen 80;
server_name localhost;
.....................
#配置静态资源
location /static/ {
root /usr/share/nginx/html;
}
................
}
然后在挂载的/mydata/nginx/html下导入静态资源
访问虚拟机地址和端口如http://192.168.182.130:80,就会自动找/mydata/nginx/html下的静态资源
请求转发
server {
listen 9001; #看你实际工程的需求要哪个端口做为入口
server_name localhost; #主机
#~是正则匹配,不加则是字母一个不差的匹配,
# 匹配规则,例如 /abc路径是 http://localhost:8001
# /ccc路径是 http://localhost:8002
location ~ /abc/ {
#转发的服务器地址
proxy_pass http://localhost:8001;
}
location ~ /ccc/ {
#转发的服务器地址
proxy_pass http://localhost:8002;
}
.........
.........
}
nginx支持上传大小有限制**
.例如浏览器报错:413 (Request Entity Too Large)
解决:client_max_body_size 1024m;加入到nginx的配置中的
http{ include mime.types; default_type application/octet-stream; ............. client_max_body_size 1024m; ............ } ```里面
然后重启nginx
748

被折叠的 条评论
为什么被折叠?



