百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

nginx修改conf后不生效的解决方法与root|alias总结

off999 2025-01-16 20:32 12 浏览 0 评论

一、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

然后再启动下nginxsudo ./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

相关推荐

30s带你使用Python打包exe文件,并修改其图标

在Python中,我们可以使用PyInstaller或cx_Freeze等工具将Python脚本打包成可执行文件(.exe),并且能够修改生成的.exe文件的图标。使用PyInstaller...

Python一键打包为windows的exe文件,无需安装python环境即可执行

一、为什么要将Python打包为exe?在实际应用中,我们希望Python程序能在没有安装Python环境的电脑上直接运行。将Python代码打包为exe可执行文件,不仅能解决环境依赖问题,还便于程...

py2exe实现python文件打包为.exe可执行程序(上篇)

今天分享的内容为:python程序实现发送、读取邮件来控制电脑的关机与重启(作为py2exe打包成.exe可执行程序的基础文件)一、说明:本文介绍的是使用新浪邮箱作为例子进行讲解,代码实现如下:#c...

如何将python程序文件打包生成一个可执行文件(exe文件)

在开发Python程序后,有时我们希望将其打包成一个可执行的exe文件,方便在没有Python环境的计算机上运行。下面将详细介绍使用常见工具实现这一目标的方法。安装PyInstaller...

Python程序打包为EXE的全面指南:从入门到精通

引言在Python开发中,将程序打包成可执行文件(EXE)是分发应用程序的重要环节。通过打包,我们可以创建独立的可执行文件,让没有安装Python环境的用户也能运行我们的程序。本篇文章将详细介绍如何使...

10个你没有充分利用的令人惊叹的 Python 特性

Python的简单性和多功能性使其成为全球开发人员的最爱。每天有超过1000万开发者使用Python进行从网络开发、机器学习到网络脚本等各种开发,Python的功能非常强大。然而,我们中的...

编程语言可以用来做什么

1.web前端你每天浏览的网页,所看到的页面特效,均是由web前端工程师来实现的2.Java大型购物网站有关通信及网络企业大型企业级应用管理系统大型网游后台数据3.C++嵌入式三维游戏领域人工智能领域...

用Python进行机器学习(16)-内容总结

对于用Python进行机器学习的内容,到这里就要做一个阶段性总结啦,后续再写的文章就是关于深度学习的了,算是对该部分内容的进阶版。对于机器学习,我们主要介绍了五个方面的内容:第一个就是分类算法,主要包...

普通人如何利用python做自媒体赚收益

普通人利用Python做自媒体赚收益,最简单的方式是下载某些网站的视频,并利用剪影编辑视频,最后导出发布,每天可以制作个10几条,并设置好定时发布,每天如此坚持下去,一定会有所收获的...

AI能写什么做什么?这些技能已经颠覆你的认知!

在ChatGPT、文心一言等AI工具爆火的今天,人工智能早已不再是科幻电影里的概念,而是实实在在地渗透进我们的生活。**AI到底能写什么?能做什么?它的边界在哪里?**让我们一探究竟!---**1....

Python 3.14 新特性盘点,更新了些什么?

Python3.14.0稳定版将于2025年10月正式发布,目前已进入beta测试阶段。这意味着在往后的几个月里,3.14的新功能已冻结,不再合入新功能(除了修复问题和完善文档)。3...

每天一个Python库:sys模块的5个高频用法(建议收藏)

很多人学Python,一直卡在“写不了实用脚本”。其实,会用标准库,效率直接翻倍。今天分享的是:sys模块。这个模块虽然基础,但非常实用,下面是我亲测常用的5个功能1.获取命令行参数(自动化脚...

Python除了做爬虫抓数据还能做什么?其实还能监视和衡量网站性能

  借助这份对初学者友好的指南,您可以构建自己的自定义Python脚本来自动测量网站的关键速度和性能指标。  在过去的一个月中,Google宣布了许多通过关键速度和性能指标来衡量用户体验的方法。  巧...

python究竟可以用来做些什么

这里就不撰述python的一些像什么“高级语言”之类的比较常规的介绍了,还是老样子,说说一些比较常用的东西吧。python是什么python,一款可编程的开源软件,很多第三方库、框架也是开源的,比如强...

Python 实现 dubbo 协议接口自动化测试

前言python语言也可以实现对dubbo协议的接口进行调用与测试,可以使用python+hessian结合的方式,也可以使用python+telnet结合的方式模拟命令行的模式来实现对...

取消回复欢迎 发表评论: