当前位置: 首页 > news >正文

【檀越剑指大厂—Nginx】Nginx篇

一.安装

#yum 安装ningx
#nginx添加yum repro库中
# 下载nginx包
wget https://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 建立nginx的yum仓库
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm


#查看nginx的信息
yum info nginx


#查看yum源仓库中nginx版本
yum --showduplicates list nginx | expand


#安装nginx,默认安装最新的稳定版本 及 nginx 1.20.2
yum install nginx

#查看版本
nginx -V

二.命令

#nginx常用操作
#常用操作是基于nginx正确安装的基础上的操作

#启动nginx
systemctl start nginx

#停止 nginx
systemctl stop nginx

#重启 nginx
systemctl restart nginx

#重新加载配置
systemctl reload nginx

#设置开机启动
systemctl enable nginx

#关闭开机启动设置
systemctl disable nginx

三.配置

1.配置目录

/etc/nginx

2.执行目录

/usr/sbin/nginx

3.站点目录

/usr/share/nginx/html

4.我的 nginx 配置

server {
        listen       80;
				server_name  qinyingjie.top;
        root         /usr/share/nginx/html;
        include /etc/nginx/default.d/*.conf;
        location / {
	       	root   html;
    	  	index  index.html index.htm;
	       	proxy_pass http://localhost:8080/;
       	}
				location ~ .*\.(gif|jpg|jpeg|png|jfif)$ {
	         root  /kwan/;
           autoindex    on ;
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

5.服务器

120.79.36.53 qinyingjie.top

四.特性

1.域名

upstream qinyingjie.top {
  server localhost:8080;
}
location / {
  proxy_pass http://qinyingjie.top;
}

2.图片不展示

location ~ .*\.(gif|jpg|jpeg|png|jfif)$ {
  proxy_pass http://qinyingjie.top;
  root /kwan/;
  autoindex on;
}

3.负载均衡

1.轮训

upstream open-api-test-category{
    server 10.250.16.111:8195;
    server 10.250.16.111:8196;
}

location / {
    proxy_pass http://open-api-test-category/;
}

2.权重

upstream open-api-test-category{
    server 10.250.16.111:8195 weight=1;
    server 10.250.16.111:8196 weight=3;
}

location / {
    proxy_pass http://open-api-test-category/;
}

3.hash

upstream open-api-test-category{
    server 10.250.16.111:8195;
    server 10.250.16.111:8196;
    ip_hash;
}

location / {
    proxy_pass http://open-api-test-category/;
}

4.动静分离

location ~ .*\.(gif|jpg|jpeg|png|jfif)$ {
          root   /kwan/ ;
          autoindex    on ;
}

5.域名

server_name  qinyingjie.top;

6.反向代理

location / {
	       	root   html;
    	  	index  index.html index.htm;
	       	proxy_pass http://localhost:8080/;
}

7.root 和 alias 区别

最基本的区别:alias 指定的目录是准确的,root 是指定目录的上级目录,并且该上级目录要含有 location 指定名称的同名目录。另外,根据前文所述,使用 alias 标签的目录块中不能使用 rewrite 的 break。

  • alias 虚拟目录配置中,location 匹配的 path 目录如果后面不带"/“,那么访问的 url 地址中这个 path 目录后面加不加”/“不影响访问,访问时它会自动加上”/“;

  • 但是如果 location 匹配的 path 目录后面加上”/“,那么访问的 url 地址中这个 path 目录必须要加上”/“,访问时它不会自动加上”/“。如果不加上”/“,访问就会失败!

  • root 目录配置中,location 匹配的 path 目录后面带不带”/",都不会影响访问。

在 nginx 配置中的良好习惯是:

  • 在 location /中配置 root 目录;
  • 在 location /path 中配置 alias 虚拟目录。
#直观理解如下形式:
location /dev/{
	alias /web/dev/doc/; #这个查找文件的路径直接是/web/dev/doc/
}

location /dev/{
	root /web/dev/doc/; #这个查找文件的路径应该是/web/dev/doc/dev
}
# 这里使用root配置 如果访问 192.168.2.3/pak/a.html  则对应的路径为:/usr/local/pak/a.html
# 通过root配置则location配置的/pak/一定是要在root对应的/usr/local/目录下要有的目录

8.proxy_pass

结论:

  • 如果 proxy_pass 末尾有斜杠/,proxy_pass 不拼接 location 的路径
  • 如果 proxy_pass 末尾无斜杠/,proxy_pass 会拼接 location 的路径

8.1.proxy_pass 末尾有斜杠

location  /api/ {
    proxy_pass http://127.0.0.1:8000/;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/test

8.2.proxy_pass 末尾无斜杠

location  /api/ {
    proxy_pass http://127.0.0.1:8000;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/api/test

8.3.proxy_pass 包含路径,且末尾有斜杠

location  /api/ {
    proxy_pass http://127.0.0.1:8000/user/;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/user/test

8.4.proxy_pass 包含路径,末尾无斜杠

location  /api/ {
    proxy_pass http://127.0.0.1:8000/user;
}

请求地址:http://localhost/api/test
转发地址:http://127.0.0.1:8000/usertest

相关文章:

  • Nacos配置管理
  • 【C进阶】第十篇——数据在内存中的存储
  • Qt实现全局鼠标事件监听器-Windows
  • 基于LEACH和HEED的WSN路由协议研究与改进(Matlab代码实现)
  • JDBC连接数据库详解~
  • 【Docker】解决Docker创建Tomcat容器实例后访问Tomcat主页时报HTTP状态404-未找到的错误
  • GitLab安装与卸载
  • Python编程 圣诞树教程 (附代码)程序员的浪漫
  • 冰雪旅游热开启!IU酒店与您畅游山水之间
  • 详解vue中watch的用法
  • CH36X系列接口芯片Linux系统开发库说明
  • 为什么char a[]的a不能用a=“hello”来赋值?
  • SpringBoot简单优雅实现图片上传功能(超详细)
  • SpringBoot整合Mybatis-Plus分页失效
  • 10.每天进步一点点---Python-Requests HTTP 请求库-2
  • 鸿蒙开发初体验以及遇到的几点坑
  • AI 实战篇 |基于 AI开放平台实现 【植物识别】 功能,成为行走的百科全书
  • 9 个神奇的 Python 技巧,让你的代码更优雅
  • Roson的Qt之旅 #136 Qt实现截图功能
  • MySQL 日志之 binlog 格式 → 关于 MySQL 默认隔离级别的探讨
  • 张炜琳已任三明市委常委、宣传部部长
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?
  • 游客曝九寨沟打网约车被出租车围堵,景区回应:当地无合规网约车
  • 陈文清:推进扫黑除恶常态化走深走实,有力回应人民群众对安居乐业的新期待
  • 华夏银行一季度营收降逾17%、净利降逾14%,公允价值变动损失逾24亿
  • 呼伦贝尔市委常委、组织部长闫轶圣调任内蒙古交通集团党委副书记