首页 > 其他分享 >ngnix简介和基础

ngnix简介和基础

时间:2024-07-22 10:17:45浏览次数:12  
标签:加密 ssl 简介 ngnix 基础 nginx usr root local

一、Nginx简介

  • Nginx
    • 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器
    • 是一个模块化软件

【1】、安装nginx

  • 使用源码包编译安装

    cd /opt
    # 获取nginx的源码包
    wget https://nginx.org/download/nginx-1.24.0.tar.gz
    
  • 安装源码编译安装的依赖

    yum install -y gcc make pcre-devel openssl-devel
    
  • 编译安装

    cd nginx-1.24.0/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
    # with-http_ssl_module:安全模块
    make && make install
    
  • 安装完成

    root@proxy[00:32:33]:/opt/nginx-1.24.0
    $ cd /usr/local/nginx/
    root@proxy[00:32:42]:/usr/local/nginx
    $ ls
    conf  html  logs  sbin
    # 创建nginx的执行用户
    root@proxy[00:32:43]:/usr/local/nginx
    $ useradd nginx -s /sbin/nologin
    
  • 启动测试

    root@proxy[00:33:21]:/usr/local/nginx
    $ ./sbin/nginx 
    root@proxy[00:33:32]:/usr/local/nginx
    $ netstat -tunple |  grep 80
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          45415      8939/nginx: master
    

【2】、nginx目录解析

  • conf:存放nginx的配置文件
  • html:存放网页文件
  • sbin:主程序目录
  • logs:日志
root@proxy[00:41:29]:/usr/local/nginx
$ ./sbin/nginx -s stop
root@proxy[00:41:41]:/usr/local/nginx
$ ./sbin/nginx -V
nginx version: nginx/1.24.0
built by gcc 8.5.0 20210514 (Red Hat 8.5.0-20) (GCC) 
built with OpenSSL 1.1.1k  FIPS 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module

重新加载配置

sbin/nginx -s reload

【3】、nginx配置文件

nginx配置文件分为3部分

指令 参数 ;

指令是在nginx中定义好的,参数可以有也可以没有

./conf/nginx.conf.default:是nginx的配置文件的原始模板,不要修改

# 第39行,取消注释,将原本的编码改为utf-8,网页即可支持中文
charset utf-8;

实现认证功能

在配置认证功能后,别人就不能随便访问了

在虚拟主机的范围中输入如下两行:

auth_basic "password"; 开启认证功能

auth_basic_user_file "/usr/local/nginx/pass"; 谁能访问都在这个文件中,一会新建这个文件

nginx要求:

pass文件中的密码必须是加密的形式,不能是明文。因此我们不能通过vim创建并写入内容

我们下载一个新的工具

yum install -y httpd-tools

这个工具提供了可以进行加密的方式:htpasswd命令

root@proxy[01:27:32]:/usr/local/nginx
$ htpasswd -c /usr/local/nginx/pass tim
New password: 
Re-type new password: 
Adding password for user tim
root@proxy[01:28:49]:/usr/local/nginx
$ cat /usr/local/nginx/pass 
tim:$apr1$pgY4Cs/n$isLfKsG9OPy33UmyhB0hY0
$ htpasswd /usr/local/nginx/pass tom
New password: 
Re-type new password: 
Adding password for user tom

【4】、nginx实现虚拟主机

和httpd一样

nginx也可以设置虚拟主机

修改nginx的配置文件

# 基于域名的虚拟机主机
server{
listen 80;
server_name www.a.com;
root html_a;
index index.html;
}
# 基于端口的虚拟主机
server{
listen 8080;
server_name www.a.com;
root html_a;
index index.html;
}

【5】、加密网站

  • 对称密钥
    • 同一个密码加密,同一个密码解密就是对称加密
    • AES
    • DES
    • 应用案例:RAR、ZIP压缩加密(只适合单机加密)
  • 非对称密钥

相关文章

  • Java基础面试题大全 -001
    1、Java语言有哪些特点1、简单易学、有丰富的类库2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)3、与平台无关性(JVM是Java跨平台使用的根本)4、可靠安全5、支持多线程6、java生态完善2、面向对象和面向过程的区别面向过程:是分析解决问题的步骤,然后用函数......
  • linux系统基础:查找文件 20240722
    在Shell中查找文件是一个常见的任务,可以使用多种工具来完成,例如find、locate、grep等。以下是一些使用这些工具的示例。1.使用find命令find命令是最常用的文件查找工具之一,它在指定目录及其子目录下搜索符合条件的文件。示例:查找/home/user目录下所有以.txt结尾的文件。find......
  • 一天一点点,第四天Python基础
    第一天:一天一点点。Python基础-CSDN博客第二天:一天一点点,接上章Python基础-CSDN博客第三天:一天一点点,第三天Python基础(循环语句)-CSDN博客推导式推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。推导式是一种强大且简洁的语法,适用于生......
  • 深入浅出C语言指针(基础篇)
    目录引言一、认识指针指针是什么? 二、指针变量和地址1.取地址操作符2.指针变量3.解引用操作符 4.指针变量的大小 三、指针和指针类型1.指针的类型2.指针+-整数3.指针的解引用四、const修饰指针变量 1.const修饰指向的数据2.const修饰指针本身3.const同......
  • 一文掌握 Tailwind CSS 基础
    一文掌握TailwindCSS基础工欲善其事,必先利其器先推荐一些好用的工具:TailWindCSS代码提示功能的vscode插件:TailwindCSSIntelliSense再推荐一个TailwindCSS速查网站:https://tailwind.muzhifan.top/本文假定读者已经有一定的CSS基础1宽高1.使用预定义类名如......
  • 机械学习—零基础学习日志(高数08——函数周期性)
    零基础为了学人工智能,真的开始复习高数函数的性质,开始新的学习!周期性:周期函数的合理运用就是,确定了最小周期T,以这个周期T在函数f(x)里面任意位置夹住的面积是相同的。(个人不权威表述,大概这个意思)张宇老师没有讲解第一个结论的证明,但是我还是有点疑惑的。所以,自己写了一......
  • [Java基础]ArrayList
    ArrayListArrayList是List接口的实现类,它是支持根据需要而动态增长的数组。java中标准数组是定长的,在数组被创建之后,它们不能被加长或缩短。这就意味着在创建数组时需要知道数组的所需长度,但有时我们需要动态程序中获取数组长度。ArrayList就是为此而生的,但是它不是线程安全的,外......
  • C# 基础控件
    一、设置窗体清晰度择当前项目,单击鼠标右键,选择【添加】——【类】;选择【应用程序清单文件】;打开刚才建立的清单文件app.manifest,解开<applicationxmlns="urn:schemas-microsoft-com:asm.v3">的注释;   二、DataGridViewRowHeadersVisible:false隐藏第一个空白列......
  • 网络基础 Modbus协议学习总结
    协议简介Modbus协议,首先从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,总线就意味着有主机,有从机,这些设备在同一条总线上。Modbus支持单主机,多个从机,最多支持247个从机设备。关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PLC控制器,这也是Modbus......
  • Java基础06:变量、常量、作用域
    1.变量Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。变量在使用前必须对其声明,只有在变量声明以后,才能为其分配相应长度的存储单元,声明格式为:typevarName=value,varName2=value2;//数据类型变......