简介

  • Nginx (engine x) 是一个高性能的HTTP和反向代理WEB服务器。同时也提供了IMAP/POP3/SMTP服务。具有响应快、高扩展(丰富的第三方模块支持)、高可靠、低内存消耗、高并发、热部署等优势。

安装

  • 安装Nginx之前需要先安装以下三个依赖包:
    • OpenSSL : 数据加密
      • 解压后进入目录依次执行以下命令

        ./config
        sudo make
        sudo make install

    • PCRE : 解析正则表达式
      • 解压后进入目录依次执行以下命令

        ./configure
        sudo make
        sudo make install

    • ZLib : 压缩和解压缩
      • 解压后进入目录依次执行以下命令

        ./configure
        sudo make
        sudo make install

  • Nginx
    • 解压后进入目录依次执行以下命令

      ./configure
      make
      make install

目录介绍

  • Nginx会默认安装到/usr/local/nginx目录下
    • conf :主要存放nginx的配置文件(nginx.conf)
    • sbin :存放nginx程序
    • html :存放网页资源
    • logs :日志目录

Nginx操作指令

  • 启动

    sudo ./nginx

  • 停止

    马上终止web服务器 : sudo ./nginx -s stop
    等待当前操作处理完成之后再停止 : sudo ./nginx -s quit

  • 重新加载

    sudo ./nginx -s reload

Nginx配置文件介绍

  • 路径:/usr/local/nginx/conf/nginx.conf
  • 配置文件结构
    •   -main
          |--http
          |    |--server
          |          |--location
          |--mail
      
      • main:代表整个配置文件
      • http:处理web请求
      • server:代表一个web服务器
      • location:web服务器要处理的一个指令
      • mail:处理邮件相关协议
  • 配置文件介绍(截取了一部分)
  •  #user  nobody;
     # 工作进程
     worker_processes  1;
    
     #error_log  logs/error.log;
     #error_log  logs/error.log  notice;
     #error_log  logs/error.log  info;
    
     #pid        logs/nginx.pid;
    
    
     events {
     	# 可以连接到worker的数量
     	worker_connections  1024;
     }
    
    
     http {
     	include       mime.types;
     	default_type  application/octet-stream;
     	
     	sendfile        on;
     	#tcp_nopush     on;
    
     	#keepalive_timeout  0;
     	# 保持连接超时
     	keepalive_timeout  65;
    
     	#gzip  on;
    
     	server {
         	listen       80;                  # 监听端口
         	server_name  localhost;   # 域名,对应本地ip
    
     		# / 代表资源根目录 
         	location / {
         		# html目录,在/usr/local/nginx下。
         		# 你在浏览器输入http://ip:port
         		# Nginx会去/usr/local/nginx下找html目录,并加载html目录对应的index.html文件
             	root   html;  
             	index  index.html index.htm; 
         	}
     	}
    
     	# HTTPS server
     	#
     	#server {
     	#    listen       443 ssl;
    	 	#    server_name  localhost;
    
     	#    ssl_certificate      cert.pem;
     	#    ssl_certificate_key  cert.key;
    
     	#    ssl_session_cache    shared:SSL:1m;
     	#    ssl_session_timeout  5m;
    
     	#    ssl_ciphers  HIGH:!aNULL:!MD5;
     	#    ssl_prefer_server_ciphers  on;
    
     	#    location / {
     	#        root   html;
     	#        index  index.html index.htm;
     	#    }
    	 	#}
    
     }
    

Nginx实现http服务

  • 我们直接使用Nginx默认配置,启动Nginx服务。然后在浏览器中输入本地ip和端口,就可以访问到Nginx,Nginx就实现了一个简单的http服务。
    在这里插入图片描述
    在这里插入图片描述
  • 看到这个页面,就说明访问成功了。
  • 如果要访问自己实现的html页面,直接替换/usr/local/nginx/html下面的index.html文件,并把你的依赖文件和资源文件一起拷贝到该目录下,就可以通过Nginx实现自己的http服务。

Nginx处理多个指令

  • Nginx可以处理多个不同的指令
  • 在原有配置文件基础上,再新增一个location,在/usr/local/nginx目录下创建一个新目录 html.csdn,拷贝一份index.html文件,做简单修改。放到该目录下。
  •   location /csdn {
      		# html.csdn目录,在/usr/local/nginx下
      		# 在浏览器输入http://ip:port/csdn 
      		# Nginx 会去/usr/local/nginx目录下查找html.csdn目录,并加载index.html文件
      		alias   html.csdn; 
             	index  index.html index.htm; # html目录下的文件
      }
    
  • 我们先直接访问 http://127.0.0.1:80
    在这里插入图片描述
  • 再访问 http://127.0.0.1:80/csdn, 加载的就是另一个界面了。
    在这里插入图片描述

实现https服务

  • 默认Nginx的https服务是关闭的。如果想要实现https服务,把配置文件中关于https模块的配置注释打开就可以。
  •   	# HTTPS server
      	server {
      		listen       443 ssl;
      		server_name  localhost;
      
      		# 双向认证时配置(用CA证书校验客户端证书)
      		#ssl_verify_client on;
      		#ssl_client_certificate ca.pem;
      
      		# 指定服务端证书和私钥
      		ssl_certificate      cert.pem;
      		ssl_certificate_key  cert.key;
      
      		# 指定DH参数文件(需要使用密钥协商算法为DH时指定)
      		# 可通过openssl命令行生成参数文件:openssl dhparam -out dhparam.pem 2048
      		ssl_dhparam /etc/nginx/dhparam.pem; 
      
      		# 指定SSL协议版本
      		ssl_protocols TLSv1.2 TLSv1.3; 
      		
      		# 配置SSL会话缓存的类型和大小,用于复用SSL会话,从而避免重复进行完整的握手。
      		# shared:表示缓存将在所有Nginx工作进程之间共享。
      		# 如果不用shared而用built-in,则每个进程拥有自己的独立缓存,客户端如果被分配到不同进程,就无法复用缓存,导致效率下降。
      		# SSL:这是缓存存储空间的名称(标签),可以自定义,但通常写SSL。
      		# 1m:表示分配 1兆字节(MB) 的内存空间用于缓存会话。
      		ssl_session_cache    shared:SSL:1m;
      		
      		# 指定SSL会话缓存在内存中的有效期或生存时间。(5分钟)
      		ssl_session_timeout  5m;
      		
      		# 加密套件(服务端自动选择算法更优的加密套件,且身份验证和加密算法不能为空,摘要算法不能为MD5)
      		ssl_ciphers  HIGH:!aNULL:!MD5;
      		# 密钥协商算法为RSA
      		# ssl_ciphers AES128-GCM-SHA256;
      		# 密钥协商算法为DH
      		# ssl_ciphers DHE-RSA-AES256-GCM-SHA384;
      		
      		# 服务端选择加密套件的优先级
      		# on:Nginx会忽略客户端的排序,强行从列表中选择自己 ssl_ciphers 配置中排在最前面且客户端也支持的那个套件。
      		# off:Nginx通常会选择客户端列表中第一个双方都支持的套件。
      		ssl_prefer_server_ciphers  on;
      
      		location / {
      		    root   html;
      		    index  index.html index.htm;
      		}
       	}
    
  • 默认https服务是443端口,也可以改成别的端口。
  • 搭建https服务,需要一个证书文件和私钥文件。这两个文件在Nginx安装包里是没有的。如果是正式的生产环境,需要向专业的证书颁发机构去申请证书,如果是自己测试,可以使用openssl命令行工具去生成一个。把证书和私钥文件拷贝到/usr/local/nginx/conf下,文件名和配置文件中的保持一致,然后重新启动Nginx就可以实现https服务了。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐