NGINX安装和全局配置

完成nginx编译安装脚本

Nginx的编译安装脚本通常包括一下几个步骤,包括安装编译环境、下载Nginx源码、解压、配置、编译和安装等。

#!/bin/bash  
  
# 设置工作目录  
SRC_DIR="/usr/local/src"  
mkdir -p $SRC_DIR  
cd $SRC_DIR  
  
# 安装编译环境和依赖包  
echo "正在安装编译环境和依赖包..."  
yum -y install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel  
  
# 下载Nginx源码包  
NGINX_VERSION="nginx-1.22.0"    
NGINX_URL="http://nginx.org/download/"  
NGINX_FILE="${NGINX_VERSION}.tar.gz"  
  
if [ ! -f "${NGINX_FILE}" ]; then  
    echo "正在下载Nginx源码包..."  
    wget ${NGINX_URL}${NGINX_FILE}  
    if [ $? -ne 0 ]; then  
        echo "下载Nginx源码包失败,请检查网络连接或Nginx官网地址。"  
        exit 1  
    fi  
else  
    echo "Nginx源码包已存在,无需重新下载。"  
fi  
  
# 解压Nginx源码包  
tar -zxf ${NGINX_FILE}  
NGINX_DIR=$(echo ${NGINX_FILE} | sed -r 's/\.tar\.gz$//')  
cd $NGINX_DIR  
  
# 配置Nginx安装选项  
echo "正在配置Nginx安装选项..."  
./configure \  
    --prefix=/usr/local/nginx \  
    --user=nginx \  
    --group=nginx \  
    --with-http_ssl_module \  
    --with-http_stub_status_module \  
    --with-http_gzip_static_module \  
    --with-pcre \  
    --with-stream \  
    --with-stream_ssl_module \  
  
# 编译并安装Nginx  
echo "正在编译并安装Nginx..."  
make  
if [ $? -ne 0 ]; then  
    echo "Nginx编译失败,请检查错误日志。"  
    exit 1  
fi  
make install  
  
# 创建Nginx用户(如果尚未创建)  
if ! id nginx &>/dev/null; then  
    useradd -s /sbin/nologin -r nginx  
    echo "已成功创建nginx用户。"  
else  
    echo "nginx用户已存在。"  
fi  
  
# 启动Nginx
/usr/local/nginx/sbin/nginx 
  
echo "Nginx启动成功!"  

  

完成nginx平滑升级,总结步骤

1. 确认当前Nginx版本和配置

首先,确认当前运行的Nginx版本和配置。

/usr/local/nginx/sbin/nginx -v
cat /usr/local/nginx/conf/nginx.conf
2. 准备新版本的Nginx源码

下载并解压新版本的Nginx源码。

wget http://nginx.org/download/nginx-1.22.0.tar.gz
tar zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0
3. 安装编译依赖

安装编译Nginx所需的依赖库。

sudo apt-get update
sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev
4. 配置新版本Nginx

使用与当前运行版本相同的配置选项来配置新版本Nginx。

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre
5. 编译新版本Nginx

编译Nginx源码,但不要执行make install

make
6. 备份旧版本Nginx二进制文件

备份旧版本的Nginx二进制文件。

sudo mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
7. 更新Nginx二进制文件

将新编译的Nginx二进制文件复制到安装目录。

sudo cp objs/nginx /usr/local/nginx/sbin/nginx
8. 发送信号启动新版本Nginx

向Nginx主进程发送USR2信号,启动新版本的Nginx。

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

此时,会创建一个新的Nginx主进程和新的工作进程,而旧版本Nginx将继续处理现有连接。

9. 优雅关闭旧版本工作进程

向旧版本的主进程发送WINCH信号,使其优雅地关闭工作进程。

kill -WINCH `cat /usr/local/nginx/logs/nginx.pid.oldbin`
10. 检查新版本Nginx是否运行正常

检查新版本Nginx是否能够正常处理请求。

curl -I http://localhost
11. 完全停止旧版本Nginx

确认新版本运行正常后,向旧版本主进程发送QUIT信号,完全停止旧版本Nginx。

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
12. 清理旧版本文件

确认新版本运行稳定后,删除备份的旧版本文件。

rm /usr/local/nginx/sbin/nginx.old

总结nginx核心配置,并实现nginx多虚拟主机

Nginx核心配置总结

Nginx的配置文件主要位于/etc/nginx/nginx.conf(在大多数Linux发行版中),但也可以包括其他文件,这些文件通过include指令被引入。Nginx配置由几个部分组成,但主要可以归结为以下几个核心部分:

  1. 全局块:主要设置影响nginx服务器整体运行的配置指令,如user(运行nginx进程的用户)、worker_processes(工作进程数量)、error_log(错误日志路径)等。
  2. events块:主要影响nginx服务器与用户的网络连接,如worker_connections(单个工作进程的最大并发连接数)。
  3. http块:可以包含多个server块,用于定义虚拟主机。http块还可以包含一些影响所有server块的指令,如mime.types文件的引用、log_format(日志格式定义)、access_log(访问日志)等。
  4. server块:用于定义虚拟主机的相关配置,如监听端口、域名、SSL配置、location块等。
  5. location块:用于匹配请求的URI,并对匹配的请求进行处理,如转发请求给后端应用服务器、返回特定文件等。
实现Nginx多虚拟主机

在Nginx中,可以通过定义多个server块来实现多虚拟主机。以下是一个配置示例,它配置了两个虚拟主机:

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    # 第一个虚拟主机
    server {
        listen       80;
        server_name  www.example1.com;
        location / {
            root   /usr/local/nginx/html/example1;
            index  index.html index.htm;
        }
    }
    # 第二个虚拟主机
    server {
        listen       80;
        server_name  www.example2.com;
        location / {
            root   /usr/local/nginx/html/example2;
            index  index.html index.htm;
        }
    }
}

在这个配置中:

  • 第一个虚拟主机监听80端口,服务名为www.example1.com,其根目录设置为/usr/local/nginx/html/example1。
  • 第二个虚拟主机同样监听80端口,服务名为www.example2.com,其根目录设置为/usr/local/nginx/html/example2
    确保为每个虚拟主机创建相应的根目录,并放置正确的网页文件。
    要使配置生效,你需要重新加载Nginx配置:
sudo nginx -s reload

通过在/etc/hosts文件中添加以下内容,你可以在本地测试这些虚拟主机:

10.0.0.152       www.example1.com
10.0.0.154       www.example2.com

现在,当你访问http://www.example.comhttp://www.anotherexample.com时,Nginx会根据server_name将请求分发到对应的虚拟主机。

总结nginx日志格式定制

默认日志格式

Nginx提供了几种默认的日志格式,其中最常见的是maincombinedmain格式记录了基本的请求信息,包括客户端IP、请求时间、请求方法、请求URI、状态码、发送的字节数、引用页面和用户代理等。而combined格式则在main的基础上增加了$http_referer字段,用于记录引用页面的URL。

自定义日志格式

除了使用默认的日志格式外,Nginx还允许用户通过log_format指令自定义日志格式。自定义日志格式可以包含Nginx预定义的变量,也可以包含自定义的变量(通过map指令等方式定义)。

自定义日志格式的语法如下:


log_format name [escape=default|json|none] string ...;
  • name:自定义日志格式的名称,在access_log指令中引用。
  • escape:可选参数,用于指定日志中的特殊字符如何处理。default表示使用Nginx的默认转义规则,json表示使用JSON转义规则,none表示不进行转义。
  • string ...:格式化字符串,可以包含Nginx预定义的变量和自定义的变量。
日志格式中的常用变量
  • $remote_addr:客户端的IP地址。
  • $time_local:请求的本地时间。
  • $request:完整的HTTP请求行,包括请求方法、URI和协议。
  • $status:服务器响应的HTTP状态码。
  • $body_bytes_sent:发送给客户端的字节数(不包括响应头的大小)。
  • $http_referer:客户端发送的HTTP Referer头部信息。
  • $http_user_agent:客户端发送的User-Agent头部信息。
  • $http_x_forwarded_for:经过代理或负载均衡器时,客户端的真实IP地址(如果设置了该头部)。

总结 nginx反向代理及https安全加密

Nginx反向代理及HTTPS安全加密是现代Web服务中重要的技术和安全手段。下面分别对Nginx反向代理和HTTPS安全加密进行总结:

一、Nginx反向代理

1. 定义与功能

  • 定义:Nginx反向代理是一种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后反向代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。

  • 功能

    • 负载均衡:Nginx可以通过反向代理实现负载均衡,将请求分发到多个后端服务器上,提高系统的并发处理能力和可用性。常见的负载均衡算法有轮询、IP哈希、最少连接等。
    • 缓存加速:Nginx可以缓存静态资源或动态页面,减少后端服务器的负载,提高响应速度。
    • SSL终端:Nginx可以作为SSL终端,接收HTTPS请求并进行SSL/TLS解密,然后将解密后的请求转发给后端服务器,提高安全性和性能。
    • 安全过滤:Nginx可以通过反向代理实现安全过滤功能,如防止恶意请求、DDoS攻击、SQL注入等。

2. 配置过程

Nginx的反向代理功能通过配置文件进行配置,配置文件通常包含全局配置、HTTP配置和Server配置等部分。配置过程大致包括:

  • 修改Nginx配置文件,设置监听端口、代理规则、缓存配置、负载均衡策略等。
  • 保存配置文件并重启Nginx服务,使配置生效。

3. 优点

  • 保护目标服务器:Nginx反向代理可以隐藏目标服务器的真实IP地址和端口,防止恶意用户直接攻击目标服务器。
  • 节省IP资源:通过Nginx反向代理,可以将多个后端服务器隐藏在同一个公网IP地址后面,节省IP地址资源。
  • 提高访问速度:Nginx反向代理可以缓存静态资源,减少后端服务器的负载并提高响应速度。
二、HTTPS安全加密

1. 定义与原理

  • 定义:HTTPS(Hypertext Transfer Protocol Secure)是在HTTP基础上加入SSL/TLS加密层的安全超文本传输协议。
  • 原理:HTTPS协议使用SSL/TLS协议对数据进行加密传输,确保数据在传输过程中的机密性和完整性。同时,HTTPS还可以验证服务器的身份,防止中间人攻击。

2. 加密过程

HTTPS的加密过程大致如下:

  • 客户端发起HTTPS连接请求。
  • 服务器返回自己的数字证书给客户端,证书包含服务器的公钥、证书颁发机构的数字签名等信息。
  • 客户端验证证书的有效性,包括检查证书是否由受信任的证书颁发机构签发、证书是否在有效期内以及证书中的域名是否与访问的域名匹配等。
  • 如果证书验证通过,客户端生成一个随机的对称密钥(会话密钥)用于加密通信,并使用服务器的公钥对会话密钥进行加密后发送给服务器。
  • 服务器使用自己的私钥解密会话密钥,之后双方使用会话密钥进行加密通信。

3. 优点

  • 数据加密:保护数据在传输过程中不被窃取或篡改。
  • 身份验证:验证服务器的身份,确保用户连接的是正确的服务器。
  • 提高信任与安全:使用数字证书建立信任关系,减少恶意攻击的可能性。
  • 符合标准:现代网络安全标准和实践推荐使用HTTPS来保护Web应用程序。

4. 注意事项

  • 定期更新SSL/TLS证书,保持证书的有效性。
  • 使用强加密算法和密钥长度,提高数据传输的安全性。
  • 配置正确的SSL/TLS协议版本和密码套件,避免已知的安全漏洞。

综上所述,Nginx反向代理和HTTPS安全加密是现代Web服务中不可或缺的技术手段,它们共同为Web应用提供了高性能、高可用性和高安全性的保障。

实验完成基于LNMP和Redis的phpmyadmin的会话保持,记录完整步骤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值