nginx 配置文件
检查nginx配置文件是否正确
nginx -t
首先是event模块
这个模块是告诉Nginx如何处理连接的
修改nginx配置文件以后,要重新载入配置文件
nginx -s reload
htpp模块
用户发起http请求处理的模块
http里面可以有server模块
root指定根目录 默认是去找index.html
也可以自己指定自定义的页面 需要使用 index egg.html
include代表引入,这个要在server{}的外面
include /etc/nginx/mime.types 这个代表引入不同类型
location
这个代表访问localhost的时候就会访问 root里面的目录
现在我们想访问localhost/app依旧是我们以前的页面
访问结果是报错404,因为nginx去/var/www/localhost下面没有找到app的目录,如果加上app的目录,就不会报错
找不到导致的报错404
location指定不止要匹配url还要匹配对应路径的文件
但是
如果我们访问localhost/app/或者在url后面加上index.html,那么就能访问这是为啥??
当你配置一个带前缀的location块,例如location /app {,Nginx将只匹配以/app开头的exact URLs。然而,当你请求localhost/app时,Nginx找不到exact匹配,因此它将尝试在文档根目录下找到名为app的目录。如果不存在,将返回404错误。
另一方面,当你请求localhost/app/时,Nginx看到尾部斜杠,并将其视为目录请求。在这种情况下,它将匹配location /app {块,并处理该请求。
location 参数 /app
location = /app/index.html {} 这个代表访问的时候一定要访问 app/index.html才能响应,其他的访问都没有响应,访问的路径和文件要保持一致
正则表达
假设现在我的路径下面有1-10个视频,但是我只想公布6-9
我们就可以写 local ~ /videos/video[6-9].avi {}
这样表示 6789可以访问
但是有的时候他是有大小写的区别,
比如有的是video1.avi有的是Video.avi
这个时候我们需要修改成
local ~* /videos/video[6-9].avi {}
这样不区分大小写匹配,但是用户访问,还是要与实际文件路径一致,如果用户请求的uri是大写的,实际文件名是小写的,这是不行的
- nignx只是帮你涵盖所有不区分大小写的文件路径,并不是把请求url和文件路径不区分大小写进行匹配
并不是和请求url匹配噢
也就是说, ~*加上以后,你请求的url大小写和文件名要一致,如果用户请求的是大写的,实际是小写的,那么就会报错
nignx只是帮你涵盖所有不区分大小写的文件路径
不是把用户请求url和文件路径不区分大小写进行匹配
匹配优先级
重定向
这里就是重定向
这里改变了url地址,用户是可以察觉到的,此时我们可以修改成rewrite
rewrite
修改成rewrite /temp /app/index.html
此时我们访问结果就是200,和直接访问没啥区别
注意
只是针对单个文件
当我们有多个文件,采用 try_files
try_files uri/ =404
这个意思就是先试一下用户访问的路径文件,如果没有,再看看有没有对应的文件夹,有的话就访问里面的index
反向代理
假设现在两个项目,一个在3000端口,一个在3001端口
这里用到了proxy_pass进行反向代理
这里的意思是访问指定的路径会去指定端口的项目
负载均衡
需要设置 upstream{}模块,这个要在http模块的里面,并且在serve的外面
upsteam bback{
server lcoalhost:3000;
server lcoalhost:3001;
}
给上游服务器设置名称 bback
server{
listen 8001;
server_name 127.0.0.1;
root /vat;
index index.html
location / {
proxy_pass http://bback; 这里告诉ngixn把流量导到指定服务器集群,再通过负载均衡进行分配
}
}
这里weight越大,被分配到的次数就越多
upsteam bback{
server lcoalhost:3000 weight=2;
server lcoalhost:3001 weight=6;
}
给上游服务器设置名称 bback
server{
listen 8001;
server_name 127.0.0.1;
root /vat;
index index.html
location / {
proxy_pass http://bback; 这里告诉ngixn把流量导到指定服务器集群,再通过负载均衡进行分配
}
}
nginx里面的/区别
nginx服务器地址及端口:127.0.0.1:80
后端服务地址及端口:127.0.0.1:8080
测试URL:http://127.0.0.1:80/api/upload
一
nginx配置:
location /api/ {
proxy_pass http://127.0.0.1:8080/;
}
实际访问:http://127.0.0.1:8080/upload
二
nginx配置:
location /api {
proxy_pass http://127.0.0.1:8080/;
}
实际访问:http://127.0.0.1:8080//upload
三
nginx配置:
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
实际访问:http://127.0.0.1:8080/api/upload
四
nginx配置:
location /api {
proxy_pass http://127.0.0.1:8080;
}
实际访问:http://127.0.0.1:8080/api/upload
五
nginx配置:
location /api/ {
proxy_pass http://127.0.0.1:8080/server/;
}
实际访问:http://127.0.0.1:8080/server/upload
六
nginx配置:
location /api {
proxy_pass http://127.0.0.1:8080/server/;
}
实际访问:http://127.0.0.1:8080/server//upload
七
nginx配置:
location /api/ {
proxy_pass http://127.0.0.1:8080/server;
}
实际访问:http://127.0.0.1:8080/serverupload
八
nginx配置:
location /api {
proxy_pass http://127.0.0.1:8080/server;
}