Nginx实战练习

2023-11-03

1、Nginx安装

以centos7为例:

详解博文:Nginx安装搭建之源码方式(Centos7)_centos7源码安装nginx_IT之一小佬的博客-CSDN博客

2、简单搭建站点

2.1 单个站点搭建

        正常开放情况下,开发代码防止网站的站点目录中(根目录)

创建代码目录:

        或者直接将已经开发好的代码复制到该目录下

往站点目录模拟写内容:

echo study.test.cn > /app/code/study/index.html

修改nginx配置:

        在nginx.conf文件中不推荐存放server相关的内容(网站)。

在默认的nginx.conf配置文件下进行修改:

# 添加
include /root/software/Nginx/nginx_install/conf.d/*.conf;

子配置文件:

vim study.test.cn.conf

server {
  listen 80;
  server_name study.test.cn;
  root /app/code/study;
  location / {
    index index.html;
  }
}

修改完配置文件后,检查语法:

重新加载新配置:

./nginx -s reload

网站访问:

本地hosts文件配置-域名访问:

windows系统:修改hosts文件:

Linux系统修改hosts文件:

vim /etc/hosts

2.2 多个站点搭建

        在2.1的基础上继续搭建多个站点。

# 创建游戏网站
[root@dgw-machine /]# mkdir -p /app/code/game
[root@dgw-machine /]# echo game.test.cn > /app/code/game/index.html
[root@dgw-machine /]# cat /app/code/game/index.html 
game.test.cn


# 创建视频网站
[root@dgw-machine /]# mkdir -p /app/code/video
[root@dgw-machine /]# echo video.test.cn > /app/code/video/index.html
[root@dgw-machine /]# cat /app/code/video/index.html 
video.test.cn

修改nginx配置文件:

添加子配置文件:

# vim game.test.cn.conf

server {
  listen 80;
  server_name game.test.cn;
  root /app/code/game;
  location / {
    index index.html;
  }
}

# vim video.test.cn.conf

server {
  listen 80;
  server_name video.test.cn;
  root /app/code/video;
  location / {
    index index.html;
  }
}

修改完配置文件后,检查语法:

重新加载新配置:

./nginx -s reload

网站访问:

    目前三个域名网站端口都是使用的80,默认按字母顺序排序展示。

在nginx服务器上配置hosts文件:

127.0.0.1 study.test.cn
127.0.0.1 video.test.cn
127.0.0.1 game.test.cn

网站访问: 

3、Nginx虚拟主机配置

3.1  基于域名的虚拟主机配置

上述2.2即为基于域名的主机配置。

配置文件:

域名站点访问:

3.2 基于端口的虚拟主机配置

给网站增加特殊端口,限制用户访问。

修改基于域名的虚拟机配置的三个站点文件的listen 端口号:

修改完配置文件后,检查语法:

重新加载新配置:

./nginx -s reload

网站访问:

注意:下面访问域名后默认还是响应的80端口的内容。

域名需要添加端口号:

这种情况下,除了域名可以访问外,还可以使用IP+端口号进行访问:

查看监听的端口:

ss -lntip | grep nginx

3.3 基于IP的虚拟主机配置

    限制用户只能通过某个网卡连接与特殊端口一起使用。

修改配置文件:

# vim video.test.cn.conf

server {
  listen 172.25.35.196:8888;
  server_name video.test.cn;
  root /app/code/video;
  location / {
    index index.html;
  }
}

修改完配置文件后,检查语法:

重新加载新配置:

./nginx -s reload

网站访问:

4、默认站点内容配置

4.1 默认站点内容

        基于2.2和3.1操作情况下。如果没有设置默认的虚拟主机,按照虚拟主机文件名排序(同一个端口的),显示第一个。

修改hosts文件:

在未设置默认站点的情况下:

设置默认站点配置文件:

# vim study.test.cn.conf

server {
  listen 80 default_server;
  server_name study.test.cn;
  root /app/code/study;
  location / {
    index index.html;
  }
}

站点访问:

4.2 默认站点错误内容提示

 设置默认站点配置文件:

# vim study.test.cn.conf

server {
  listen 80 default_server;
  server_name _;
  default_type text/plain;
  return 200 "禁止访问网站";
}

访问网站:

调整中文乱码问题:

server {
  listen 80 default_server;
  server_name _;
  charset utf8;
  default_type text/plain;
  return 200 "禁止访问网站";
}

5、autoindex网站列表功能

建立下载代码目录:

mkdir -p /app/code/download

创建index.html文件:

echo welcome download > /app/code/download/index.html

配置下载功能子配置文件:

vim download.test.cn.conf

server {
  listen 80 default_server;
  server_name download.test.cn;
  root /app/code/download;
  location / {
  index index.html;
  }
}

检查nginx语法并重启:

页面访问:

从上面页面访问结果可以看出,此时未开启下载功能。

开启下载功能:

修改nginx子配置文件:

server {
  listen 80 default_server;
  server_name download.test.cn;
  root /app/code/download;
  autoindex on;
  location / {
  index index.html;
  }
}

创建下载文件:

touch /app/code/download/download{01..10}.html

注意:加上autoindex后,要想让页面显示目录下载格式,需要使index.html文件不存在。rm index.html。

再次访问页面:

注意:上面页面访问时,显示的是UTC时间,需要加autoindex_localtime显示本地时间。

再次修改子配置文件:

server {
  listen 80 default_server;
  server_name download.test.cn;
  root /app/code/download;
  autoindex on;
  autoindex_localtime on;
  location / {
  index index.html;
  }
}

检查语法重启后,再次访问页面:

6、限制模块

访问增加些限制:只让某些用户访问(白名单),禁止一些用户访问(黑名单)。

修改配置子文件:

server {
  listen 80 default_server;
  server_name download.test.cn;
  root /app/code/download;
  autoindex on;
  autoindex_localtime on;
  allow 12.24.237.6;
  deny all;
  location / {
  index index.html;
  }
}

注意:可以写ip段。如:172.10.1.0/24

查看访问日志:

 

allow和deny位置:

注意:deny all一定要放在最下方!

7、认证模块

用户访问网站或指定页面/路径要输入用户名和密码。

创建用户名和密码:

mkdir -p /app/nginx/key
htpasswd -bc /app/nginx/key/user_password test_name 123456
cat /app/nginx/key/user_password

修改用户密码文件的用户组:

注意:这一步是否需要操作,取决于nginx.conf配置文件中使用的用户组。

chown nginx /app/nginx/key/user_password

修改nginx子配置文件:

server {
  listen 80 default_server;
  server_name download.test.cn;
  root /app/code/download;
  autoindex on;
  autoindex_localtime on;
  # allow 12.244.237.60;
  # deny all;
  location / {
  index index.html;
  }
  location /vip {
  auth_basic "please input username password";
  auth_basic_user_file /app/nginx/key/user_password;
  }
}

创建vip目录文件:

[root@dgw-machine logs]# mkdir -p /app/code/download/vip
[root@dgw-machine logs]# touch /app/code/download/vip/vip_{01..10}.html
[root@dgw-machine logs]# ll /app/code/download/vip/

检查语法重启后,访问页面:

8、状态模块

用于内部统计、收集、监控nginx状态使用。使用stub_status字段。

修改nginx子配置文件:

server {
  listen 80 default_server;
  server_name download.test.cn;
  root /app/code/download;
  autoindex on;
  autoindex_localtime on;
  # allow 12.244.237.60;
  # deny all;
  location / {
  index index.html;
  }
  location /vip {
  auth_basic "please input username password";
  auth_basic_user_file /app/nginx/key/user_password;
  }
  location /status {
  stub_status;
  allow all;
  deny all;
  }
}

检查语法重启后,访问页面:

通过检查语法发现,确实相应的模块。

首先检查已经安装的模块:

添加stub_status模块,找到之前安装包,重新编译安装:

./configure --prefix=/root/software/Nginx/nginx_install --with-http_stub_status_module

 安装完检查已安装的模块:

检查语法重启后,访问页面:

注意:重新编译安装后,一定要先kill掉之前的nginx进程,否则下面访问可能不能生效!

8、location功能

注意:location的格式、匹配规则(符号)、规则的优先级、应用场景

9、Goaccess日志分析

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx实战练习 的相关文章

  • kubernetes nginx ingress 无法将 HTTP 重定向到 HTTPS

    我有一个托管在 Google Cloud 平台中的网络应用程序 该应用程序位于负载均衡器后面 而负载均衡器本身位于入口后面 入口设置了 SSL 证书 并按预期接受 HTTPS 连接 但有一个问题 我无法让它将非 HTTPS 连接重定向到 H
  • Nginx - 自定义 404 页面

    Nginx PHP 在 fastCGI 上 对我来说非常有用 当我输入不存在的 PHP 文件的路径时 我不会得到默认的 404 错误页面 任何无效的 html 文件都会出现该错误页面 而只会得到 未指定输入文件 如何自定义此 404 错误页
  • nginx 反向代理 websocket

    nginx 现在支持代理 websockets 但我无法找到任何有关如何在没有单独的情况下执行此操作的信息location应用于使用 websocket 的 URI 的块 我见过一些人推荐这种方法的一些变体 location proxy h
  • 如何正确链接 php-fpm 和 Nginx Docker 容器?

    我正在尝试链接 2 个单独的容器 nginx 最新 https registry hub docker com nginx php fpm https registry hub docker com php 问题是 php 脚本不起作用 也
  • nginx 和 uwsgi 非常大的文件上传(>3Gb)

    也许有人知道该怎么做 我正在尝试上传大于 3Gb 的文件 没问题 如果我使用以下配置上传高达 2Gb 的文件 Nginx client max body size 5g client body in file only clean clie
  • nginx位置正则表达式,匹配多次

    如何在 nginx 位置正则表达式中多次匹配 看来 x x 语法永远不起作用 例如 location abc w 1 3 从来不工作 您必须引用包含以下内容的位置 or 人物 location abc w 1 3 否则 nginx 将其解析
  • Nginx 是否也缓冲来自客户端的 http 请求?

    我知道 Nginx 可以缓冲来自上游服务器的响应 我的问题是 Nginx 是否也缓冲来自客户端的 http 请求 我的意思是 如果 Nginx 从客户端收到 http 请求 它是否立即与上游服务器建立连接 或者它会在收到整个http请求后创
  • Docker 中的 NGINX 缓存 IP 地址并提供错误的 Content-Type

    Summary 我想让NGINX 不是NGINX Plus 通过使用变量从DNS名称重新解析IP地址proxy pass 如建议的这篇 Nginx 官方文章 在变量中设置域名 部分 https www nginx com blog dns
  • 在 docker 中将 pgadmin 连接到 postgres

    我有一个docker compose与服务文件python nginx postgres and pgadmin services postgres image postgres 9 6 env file env volumes postg
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • 阻止 ingress-nginx 负载均衡器上的特定路径

    我有许多指向入口控制器 IP 的域 我想阻止所有域 站点的 特定路径 有没有办法做到这一点 我可以用nginx ingress kubernetes io configuration snippet 对于每个站点 但正在寻找同时处理所有站点
  • 重定向而不是 404 错误页面 - 状态代码不起作用 (Nginx)

    我目前正在迁移到 nginx 服务器 我尝试将其放入名为的 404 ErrorDocument 中404 php 如果我现在尝试访问http mydomain com 404 php 这按预期工作 它将我重定向到 Google 但是一旦我尝
  • nginx上传client_max_body_size问题

    我正在运行 nginx ruby on rails 并且有一个简单的多部分表单来上传文件 一切正常 直到我决定限制要上传的文件的最大大小 为此 我设置了 nginxclient max body size to 1m 1MB 并且当该规则被
  • 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

    大家好 请帮帮我 我正在尝试在运行 Nginx 和 Fact CGI 的 Centos 服务器上设置 cakephp 环境 我已经在服务器上运行了一个 WordPress 站点和一个 phpmyadmin 站点 因此我已经正确配置了 PHP
  • 禁用 Kubernetes NGINX 入口的 SSL 重定向

    默认情况下 在 Kubernetes NGINX 入口中启用 SSL 重定向 如何禁用此功能 目前的实施如下 apiVersion extensions v1beta1 kind Ingress metadata name project
  • 如何对 nginx ingress 中的特定 HTTP 方法进行基本身份验证?

    我可以使用基本身份验证创建入口 我遵循 kubernetes ingress nginx 中的模板 apiVersion extensions v1beta1 kind Ingress metadata name ingress with
  • 我的 s3 存储桶如何使用 nginx 在不同文件夹中托管多个网站?

    我在 Amazon 上有一个 s3 Cloudfront 解决方案 我想在存储桶内的不同文件夹中托管不同的网站 并通过以下两种方式之一访问它们 子域 gt mywebsite1 mydomain com 或者 路径 gt www mydom
  • nginx 解析器——dns

    请原谅一个非常初学者的问题 我无法理解 nginx 的 解析器 参数及其工作原理 我已阅读文档 搜索教程和帖子 使用解析器 nginx 和 dns 等关键字 但我仍然不确定如何应用解析器 http nginx org en docs htt
  • Nginx 作为负载均衡器,具有 75% 和 25% 加权路由

    我是 Nginx 新手 我有两台服务器 serverA 和 serverB 我希望 75 的请求发送到 serverA 其余 25 的请求发送到 serverB 这可能吗 使用nginx加权路由 stream upstream stream
  • nginx - 使用 ssl 支持设置多个 server_name

    我很想使用 nginx 来为具有多个域名和 SSL 的网站提供服务 webmail example com webmail beispiel de 两者都使用相同的虚拟主机 因此我只设置 server name 两次 问题是 我需要 ngi

随机推荐

  • ECharts可视化图标库 (事件与行为)

    ECharts中的事件与行为 日常开发中用到echarts 一般是用来展示数据 很少在图表上添加一些事件监听函数 但是没用过不代表没有 比如鼠标悬浮之后的高亮样式和鼠标悬浮后显示的tootip 这都属于默认的鼠标悬浮事件 除此之外 如果想要
  • 国王骑士金币问题

    本文以模拟算法的两种方式解题 同时附录递归算法 不建议使用 国王发放金币给骑士 按天数发 天数n 1 2 3 4 5 6 7 8 每天的金币k 1 2 2 3 3 3 4 4 分组模拟 IO 输入天数n 输出金币总数res 循环 按天数执行
  • js详细笔记

    第一天 1 SSR Setver side Render ASP JSP PHP CSR Client side Render2016年 2 js的引入
  • PT100温度采集电路设计

    PT100是正温度系数的热敏电阻 顾名思义 随着温度的升高 电阻的阻值变大 相反 如果随着温度的升高 电阻的阻值变小 就是负温度系数的热敏电阻 之所以叫做PT100 是因为在0度时其阻值为100欧姆 PT100之所以应用很广泛 不仅仅是因为
  • springboot实现简单的单点登录

    思路 用户登录去校验用户信息 校验成功后将登录后的信息持久化 并返回一个系统可识别的信息串 用户每次访问接口将参数和信息串一起访问 然后通过拦截进行对信息串统一识别认证 实践 用户登录 通过用户名和密码验证是否登录成功 我这里是用acces
  • 使用itertools.permutations(),找出三队选手的名单

    itertools permutations 返回可迭代对象的所有数学全排列方式 题目 两个乒乓球队进行比赛 各出3人 甲队为a b c三人 乙队为x y z三人 已抽签决定比赛名单 有人向队员打听比赛的名单 a说他不和x比 c说他不和x
  • 【转载+整理】区块链学习笔记-北大肖臻老师课后笔记(01-13)——BTC篇

    学习视频来自 北京大学计算机系肖臻区块链学习视频 还有一些参考了一些博客的记录 其他博客1 文章目录 01 简介 02 BTC密码学原理 03BTC数据结构 04 BTC协议 05 BTC实现 06 BTC网络 07 BTC挖矿难度 08
  • 管网数据模型与数据结构

    空间数据模型是关于现实世界中空间实体及其相互问联系的概念 它为描述空 间数据的组织和设计空间数据库模式提供基本方法 管网空间数据模型是空间数据 模型的一种 在管网数据的表达和管网空间分析等方面起着极其关键的作用 1 1 城市地下管网数据特点
  • IDEA插件Free Mybatis Plugin使用心得

    目录 问题现象 问题分析 问题现象 今天在项目组长的推荐下 我在IDEA上安装了Free Mybatis Plugin插件 怎么安装我就不说了 很简单的 网上也有很多资料 这里我提一下我的一些使用心得 首先看它的介绍 其实里面唯一吸引到我的
  • 部署无线覆盖,安装无线网桥设备要注意的问题

    互联网产品和设备不断更新和迭代 以适应实际的发展 随着无线覆盖范围的发展 无线网桥产品也在升级以满足更好的需求 显然 新的无线网桥设备对安装的要求也越来越高 虽然无线网桥安装看起来很简单 但您只需将设备安装到正确的位置即可 但是 要使无线网
  • 分布式调度 Elastic-job

    分布式调度 Elastic job 1 概述 1 1什么是任务调度 我们可以思考一下下面业务场景的解决方案 某电商平台需要每天上午10点 下午3点 晚上8点发放一批优惠券 某银行系统需要在信用卡到期还款日的前三天进行短信提醒 某财务系统需要
  • Cookie的简单使用

    在JSP中 使用cookie 有以下几个步骤 1 使用page指令导入类javax servlet http cookie 2 创建Cookie对象 Cookie newCookie new Cookie String key Object
  • vue html实体空格无效

    空格类型 当第一列空格不能用时试试第二列 空格分为 两种 普通文本空格和html实体空格 普通文本空格 unicode 正则 描述 全角 中文空格键 u3000 中文网页上常会出现 半角 英文空格键 u0020 s 最常见 写代码 html
  • liquibase报错 waiting for changelog lock

    今天项目启动控制台突然卡住 liquibase一直在打印 waiting for changelog lock 这可能是由于一个被杀死的liquibase进程未在DATABASECHANGELOGLOCK表上释放其锁定 通过以下方法解决 查
  • Essential Google Cloud Infrastructure: Foundation

    最后更新2022 03 08 有点事情 中断了几天 继续GCP GCP Fundamental看完了 但是lab还没做 翻墙越脊的 太麻烦 过些时候方便了一起练习 继续学习下一课 essential系列其实是再走一遍fundamentals
  • python21天打卡Day10-string和bytes互转

    a 21 python b a encode utf 8 string转为bytes print format b type b c b 21 python d c decode utf 8 print format d type d D
  • Gstreamer推送摄像头数据到RTMP服务器的方法(SRS成功示例)

    最近在研究如何将Linux中的视频数据推送到流媒体服务器 看到gstreamer还比较不错 于是试了一下 服务端用的SRS RTMP推流 搭建非常简单 教程可参考 https blog csdn net qq 52514123 articl
  • sort根据结构体中某一元素进行排序

    先看一下简单的sort全排序 int a 100 for int i 1 i lt 10 i scanf d a i sort a a 10 OK 排完了 但是 想根据结构体的一个元素 对结构体数组排序 看完下面例题 多思考 例题 FatM
  • CoordinatorLayout 的滑动监听--自定义

    public abstract static class AppBarStateChangeListener implements AppBarLayout OnOffsetChangedListener public enum State
  • Nginx实战练习

    1 Nginx安装 以centos7为例 详解博文 Nginx安装搭建之源码方式 Centos7 centos7源码安装nginx IT之一小佬的博客 CSDN博客 2 简单搭建站点 2 1 单个站点搭建 正常开放情况下 开发代码防止网站的