一、nginx
1. 关于nginx配置文件
server {
listen 8000;
server_name localhost;
location / {
proxy_pass http://localhost:5500;
}
location /user {
proxy_pass http://localhost:3000;
}
}
- server:就相当于一台虚拟主机,一个虚拟主机在抽象的服务中就相当于一条主机,一个nginx可以配置多台虚拟主机
- listen:表示监听
来自某个服务的请求
- listen 127.0.0.1:8000 【只监听来自127.0.0.1这个ip,请求8000的端口号】
- listen 127.0.0.1; 【只监听来自127.0.0.1这个ip,请求80端口的请求(指定端口,默认是80)】
- listen 8000; 【监听来自所有ip,请求8000的端口】
- listen *:8000; 【和上面效果一样】
- listen localhost:8000; 【和第一种效果一样】
- 小结:listen监听的是向当前nginx所在主机发送的请求
- server_name:表示当前这台虚拟主机的主机名
2. location & proxy_pass
- 这个主要问题,就是关于 location 和 proxy_pass 后面加上斜杠的区别和组合
location /day06api/ {
proxy_pass http://127.0.0.1:8080/
}
location /day06api {
proxy_pass http://127.0.0.1:8080/
}
location /day06api/ {
proxy_pass http://127.0.0.1:8080
}
location /day06api {
proxy_pass http://127.0.0.1:8080
}
location /day06api/ {
proxy_pass http://127.0.0.1:8080/server/
}
location /day06api {
proxy_pass http://127.0.0.1:8080/server/
}
location /day06api/ {
proxy_pass http://127.0.0.1:8080/server
}
location /day06api {
proxy_pass http://127.0.0.1:8080/server
}
- 如果 proxy_pass 端口号之后有斜杠,就是将原来的url中uri部分去掉 location 部分字符,拼接在 proxy_pass 后面
- 如果 proxy_pass 端口号之后没有斜杠,就是使用 proxy_pass 中的ip和端口号替代原来 url 中的ip和端口号
二、关于跨域问题
- 问题产生的原因:
- 是因为前后端分离,浏览器中前端页面的 (协议 || ip || 端口号) 和向后端发送的请求中 (协议 || ip || 端口号)中任何一个不同造成的
- 解决问题的方法:
- 例子:
- 前端页面是127.0.0.1:9012/front/show
- 向后端发送请示:127.0.0.1:8021/behind/test1
- 这个时候前台向后台发送请求,因为跨域问题,浏览器会报错,无法进行访问
server {
listen 9003
server_name localhost
location /front {
proxy_pass http://127.0.0.1:9012/front
}
location /behind {
proxy_pass http://127.0.0.1:8021/behind
}
}
- 小结:跨域问题,是因为浏览器防止不同源网站可以互相访问缓存信息而产生的