网站首页 > 技术文章 正文
一、nginx修改conf后不生效的解决办法
出现这种情况,很可能是打开了多个nginx的原因,为什么会打开多个,可能是没有关闭之前的nginx,也可能是多个人启动了nginx……有很多情况,不过原因不重要,解决方法是把所有的nginx都关闭就可以了。
注意,只执行这句是不够的:
sudo ./nginx -s reload
方法一:
执行这句,查看是否存在多个nginx进程,找到进程号
ps -ef |grep nginx
然后按进程号关闭nginx
kill -9 XXX
XXX是进程号,例如kill -9 12345
方法二:
直接执行这句,关闭全部的nginx:
sudo ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9
然后再启动下nginx,sudo ./nginx -s reload,就可以发现nginx.conf修改的内容生效了。
备注:以上是linux命令,如果windows下,直接用任务管理器关闭所有nginx就可以了。
或:windows关闭所有nginx的命令
taskkill /im nginx.exe /f
二、root与alias用法总结
样例:
假设有一个linux服务器,地址为10.123.123.123;
上面有一个文件,绝对路径如下:
/u02/nginx-1.11.2.4/html/pc/dist/static/abc.pdf
现在要通过nginx访问到这个文件,nginx也在10.123.123.123;
nginx配置如下(从server部分开始):
server {
listen 6512;
server_name localhost;
error_log /u02/nginx-1.11.2.4/logs/error_access.log;
location / {
error_log logs/f_error.log;
access_log ./logs/f_access.log main;
root /u02/nginx-1.11.2.4/html/pc/dist;
try_files $uri $uri/ /index.html;
index index.html;
}
location ~ /my(.*) {
error_log logs/f_my_error.log;
access_log ./logs/f_my_access.log main;
alias /u02/nginx-1.11.2.4/html/pc/dist$1;
}
location ^~ /my2{
error_log logs/f_my2_error.log;
access_log ./logs/f_my2_access.log main;
alias /u02/nginx-1.11.2.4/html/pc/dist;
}
}
这样配置后,启动nginx,访问以下网址,就可以访问到该pdf:
http://10.123.123.123:6512/static/abc.pdf
http://10.123.123.123:6512/my/static/abc.pdf
http://10.123.123.123:6512/my2/static/abc.pdf
说明:
1.访问http://10.123.123.123:6512/static/abc.pdf,会走location /,然后通过root,到/u02/nginx-1.11.2.4/html/pc/dist下找,拼接url中后面的/static/abc.pdf,得到/u02/nginx-1.11.2.4/html/pc/dist/static/abc.pdf,就找到该文件了。
2.访问http://10.123.123.123:6512/my/static/abc.pdf,虽然也符合location /,不过有最长匹配原则,因此会走更符合的location /my(.*),然后通过alias,到/u02/nginx-1.11.2.4/html/pc/dist下找,拼接url中后面的/static/abc.pdf,得到/u02/nginx-1.11.2.4/html/pc/dist/static/abc.pdf,就找到该文件了。
3.访问http://10.123.123.123:6512/my2/static/abc.pdf,虽然也符合location /,不过有最长匹配原则,因此会走更符合的location /my2,然后通过alias,到/u02/nginx-1.11.2.4/html/pc/dist下找,拼接url中后面的/static/abc.pdf,得到/u02/nginx-1.11.2.4/html/pc/dist/static/abc.pdf,就找到该文件了。
备注:
1.access_log是打印日志用的,一般默认nginx配置中都会配置这个变量的日志格式;在location中配置后,如果有请求走了这个location,就会在日志文件中打印详情;
可以看出请求到底走没走这个location。
2.error_log也是打印日志用的,如果有请求走了这个location,并且出错了(404/500等不算,这些还打印在access_log中,是发生其它错误的时候),就会在日志文件中打印详情。
3.关于root与alias的区别:
(1)如果nginx这样配置:
location /static{
root /u02/nginx-1.11.2.4/html/pc/dist;
}
此时,如果访问:
http://10.123.123.123:6512/static/abc.pdf
会找绝对路径为下方的文件:
/u02/nginx-1.11.2.4/html/pc/dist/static/abc.pdf
可以理解为使用root,最终路径会拼接location本身,以及后面的字符,拼接了location本身/static,以及后面的/abc.pdf。
(2)如果nginx这样配置:
location /static{
alias /u02/nginx-1.11.2.4/html/pc/dist;
}
此时,如果访问:
http://10.123.123.123:6512/static/abc.pdf
1
会找绝对路径为下方的文件:
/u02/nginx-1.11.2.4/html/pc/dist/abc.pdf
注意最终路径没有static了。
可以理解为使用alias,最终路径不会拼接location本身,但是仍会拼接后面的字符,没有拼接location本身/static,但是拼接了后面的/abc.pdf。
4.location末尾是否加/总结
如果加了,内部的root、alias、proxy_pass末尾也要加/;
如果没有加,内部的root、alias、proxy_pass末尾也不用加。
5.windows关闭所有nginx的命令
taskkill /im nginx.exe /f
猜你喜欢
- 2025-01-21 30s 就可以掌握的 Nginx 片段
- 2025-01-21 Nginx域名配置
- 2025-01-21 Nginx配置终极手册:一站式详尽教程
- 2025-01-21 HHvm建站环境搭建方法:Nginx、lnmp/lamp等安装部署
- 2025-01-21 前端项目中 浏览器缓存的更新不及时问题及解决方法
- 2025-01-21 Nginx反向代理:通过外网访问内网数据库(mysql)
- 2025-01-21 如何使用 Daphne + Nginx + supervisor部署 Django
- 2025-01-21 如何在Docker中打包部署Vue项目
- 2025-01-21 有遇到部署服务器后刷新404问题吗?
- 2025-01-21 nginx-UrlRewrite 实现URL重写转发
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)