作者:流年时光云 | 来源:互联网 | 2023-09-25 09:52
ubuntu系统下使用apt-get安装的nginx,其他系统或安装方式会有差异。nginx各目录分布1.配置文件目录:etcnginx其中etcnginxnginx
ubuntu系统下使用apt-get安装的nginx,其他系统或安装方式会有差异。 nginx各目录分布 1.配置文件目录:/etc/nginx 其中/etc/nginx/nginx.conf为主配置文件,sites-available主要用于配置server段,后面会有介绍 2.启动/重启/关闭文件:/etc/init.d/nginx
/etc/init.d/nginx stop /etc/init.d/nginx start /etc/init.d/nginx reload
3.执行文件:/usr/sbin/nginx 4.web目录:/var/www
一:多端口部署项目 1.打开安全组添加入方向规则 这里以自定义了7000端口为例 2.防火墙中开启对应端口 进入linux命令之后,首次使用需要安装firewall
sudo apt install firewalld
查看所有打开的端口:
firewall-cmd --zOne=public --list-ports
添加自定义的端口:
firewall-cmd --zOne=public --add-port=7000/tcp --permanent (–permanent永久生效,没有此参数重启后失效)
注意,添加后需要重新载入才能生效
firewall-cmd --reload
查看是否生效:
firewall-cmd --zOne=public --query-port=7000/tcp
3.web目录与sites-enabled 前面我们提到web存放目录是:/var/www,里面默认有一个html目录,在我们安装完nginx时直接再浏览器输入ip或域名,默认会到80端口,并展示一个welcom to nginx的界面,就是来自于/var/www/html/index.nginx-debian.html这个文件。为什么会默认到这个文件,是在哪里配置的呢,打开/etc/nginx/nginx.conf主配置文件会发现在http内有这么一句代码: 如果所有server配置都写在 nginx.conf 主配置文件中,项目都哦了难免会显得杂乱与臃肿。为了方便配置文件的维护,所以需要进行拆分配置。 include /etc/nginx/sites-enabled/ 的作用就是引入/etc/nginx/sites-available/下的所有server文件,使用xftp工具查看会发现其实sites-enabled下其实是server配置文件的软链接。而实际配置其实是在/etc/nginx/sites-available/下 4.sites-available中自定义文件并部署项目 如果我们要在web7000这个目录下部署多个web项目,web1,web2。让浏览器访问localhost:7000/web1时响应web1的项目,访问localhost:7000/web2时响应web2的项目 (1) 切换到/etc/nginx/sites-available目录下,ls查看当前目录的配置,默认是有一个default案例。将default复制一份,并起名为任意名字以.conf结尾的文件,注意不要使用_连接的方式,例如我当初使用web_7000.conf,发现文件执行不了。 (2) vim进入自定义的.conf文件中进行编辑,我的目录中已经自定义了web7000.conf这个文件: 以7000端口为例,如果你在安全组中配置了并且防火墙开放了7000端口,就可以在这里监听。listen 7000
表示监听7000端口,server_name和location先不管,我们看root /var/www/web7000
表示会去/var/www/web7000这个项目目录下找,我们在该目录下放一个index.html文件作为测试。 接下来保存退出创建软连接,切换到sites-enabled目录下,执行
ln -s /etc/nginx/sites-available/cust.conf
然后再执行以下代码重启nginx:
/etc/init.d/nginx reload
在浏览器中输入ip:7000则会显示我们放在/var/www/web7000下的index.html文件。这样就完成了一个基本的web项目部署。 5.一个端口下部署多个项目 以上操作我们只能在7000端口下,/var/www/web7000目录下部署一个项目,如果要部署多个项目又该如何实现呢?例如浏览器输入ip:7000/web1显示项目web1,输入ip:7000/web2显示项目web2,我们的/var/www/web7000目录结构是这样 (1)更改/etc/nginx/sites-available/web7000.conf文件为: location = /web1
表示浏览器输入ip:7000/web1进入此规则,location = web2同理。里面的try_files $uri $uri/ =404存在优先级,首先找 uri是否存在,不存在响应404,uri是否存在,不存在响应404, u r i 是 否 存 在 , 不 存 在 响 应 4 0 4 , uri又代表什么意思呢,浏览器输入ip:7000/web2, $uri代表的就是/web2文件,注意是web1文件; $uri/代表的是/web2目录,如果存在则会结合root去找/var/www/web7000/web2下的index.html并响应.
所以我们做了以上配置会发现浏览器中输入ip:7000/web1响应404,输入ip:7000/web2才会响应对应web2项目下的html文件。那是不是try_files $uri就没啥用了呢, 我们在浏览器端输入ip:7000/web1/index.html时, $uri解析成了web1/index.html,所以这样时能访问的,利用这个特性,我们还可以访问web1下的其他资源,比如有一张test.png图片,则可ip:7000/web1/test.png 这样我们就实现了一个端口下部署多个项目.
参考到了https://www.cnblogs.com/oklizz/p/11336151.html这篇博客,写的很详细很全面,很适合刚解除nginx的同志。在弄通这一块知识之前找了各种博客,参差不齐,也有下载方式不一样nginx相关目录不一样,走了很多弯路,直到看到这篇博客介绍nginx各项目录解释这块一下子豁然开朗。当然还有其他知识点也很值得学习。