Nginx

本文详细介绍Nginx的安装配置流程,包括初始配置、虚拟主机设置、HTTPS证书配置、连接数与状态监控、重写规则及负载均衡策略。特别强调了多核绑定、ip_hash模式等高级配置技巧。

nginx

特点:高并发高吞吐,占有内存少。

安装

nginx-1.12.0.tar.gz

tar zxf nginx-1.12.0.tar.gz

nginx的简单初始配置

创建nginx用户,本地家目录,pid

useradd -M -d /usr/local/lnmp/nginx -s /sbin/nologin -u 800 nginx   ##创建nginx的本地家目录,uid:80

配置nginx

cd ~/nginx-1.12.0

./configure --prefix=/usr/local/lnmp/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module  ##设置nginx的目录及各种模块比如openssl加密等,安装过程出现error。逐步安装所需要的devel开发包
记得加-devel

make && make install        ##make成功后即可make install 安装

vim ~/nginx-1.12.0/src/core/nginx.h
14 #define NGINX_VER          "nginx" 

vim ~/nginx-1.12.0/auto/cc/gcc
172 #CFLAGS="$CFLAGS -g"       ##关闭gcc的debug调试模式,节省空间

/usr/local/lnmp/nginx/sbin/目录下:
./nginx

在同上目录下:
ln -s /usr/local/lnmp/nginx/sbin/ /sbin/
##方便调用

测试:
curl -I localhost
这里写图片描述

Nginx多核绑定

vim /usr/local/lnmp/nginx/conf/nginx.conf
3 worker_processes  2;      ##二核CPU,开启2个进程
5 worker_cpu_affinity 01 10;    ##01和10分别表示第一个CPU和第二个CPU
15     worker_connections  65535;   ##连接数,65535为最大的进程数

usermod -s /bin/bash nginx  ##添加nginx用户的交互模式
vim /etc/security/limits.conf   
nginx           -       nofile          65535       ##最后一行添加,最大进程数

测试:
su - nginx
ulimit -a
这里写图片描述

Nginx虚拟主机

vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
        listen 80;              ##通过80端口
        server_name www.westos.org;     输入虚拟机域名

    location / {                ##location /,在/目录下
        root /web1;         ##虚拟地址
        index index.html;       ##虚拟主页
}

测试:
curl -I www.westos.org
这里写图片描述

https,证书加密

配置nginx证书加密
vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
        listen       443 ssl;           ##端口443,ssl加密端口
        server_name  www.westos.org;

        ssl_certificate      cert.pem;      ##pem,私钥
        ssl_certificate_key  cert.pem;      ##pem???

        ssl_session_cache    shared:SSL:1m; ##缓存
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   /web1;
            index  index.html index.htm;
       }
    }
生成证书与密钥
cd /etc/pki/tls/private
openssl genrsa 2048 > localhost.key     ##生成密钥localhost.key

cd /etc/pki/tls/certs
make cert.pem                   ##生成证书,pem为私钥,在此目录下查看Makefile可知pem包含证书与加密
mv cert.pem /usr/local/lnmp/nginx/conf/     ##移至nginx/conf目录下
nginx -s reload                 ##重置nginx,使之生效

测试:
netstat -antlp ##查看443端口是否开启
访问https://www.westos.org
这里写图片描述

查看当前连接数与状态

vim /usr/local/lnmp/nginx/conf/nginx.conf
location /status {
               stub_status on;          
               access_log off;
               allow 127.0.0.1;         ##准许登录ip,若deny存在,则需写至deny前
               deny all;            ##拒绝登录

测试:
www.westos.org/status
curl localhost/status ##测试拒绝和允许时会显示链接状态

重写

  • ####permanent永久跳转
1)vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
        listen 80;
        server_name www.westos.org;

    rewrite ^(.*)$ https://www.westos.org permanent;   ##permanent:永久
}

测试:
当输入www.westos.org时自动跳转至https://www.westos.org
curl -I www.westos.org

  • redirect单次临时跳转
server {
        listen 80;
        server_name www.westos.org;

        rewrite ^(.*)$ https://www.westos.org redirect;        ##redirect:重定向
}

测试:
curl -I www.westos.org

负载均衡

  • round-robin(轮询)
    轮询是nginx中默认的负载均衡模式
vim /usr/local/lnmp/nginx/conf/nginx.conf
http {
        upstream westos {
        server 172.25.36.2:80 weight=2;             ##轮询的主机,weight为权重,若不设置则默认为1
        server 172.25.36.3:8080;    
}
server {
        listen 80;
        server_name www.westos.org;

    location / {
        proxy_pass http://westos;
}   
将server2与server3的httpd的端口改为如上upstream中需求

测试轮询:
这里写图片描述

  • 主备
http {
        upstream westos {
        server 172.25.36.2:80 weight=2;
        server 172.25.36.3:8080;
        server 127.0.0.1:8000 backup;       ##当前两主机崩溃时由127.0.0.1接手
}

测试主备(server2与server3关闭httpd服务,server1顶替):
这里写图片描述

  • ip_hash
http {
        upstream westos {
        ip_hash;
    server 172.25.36.2:80;
        server 172.25.36.3:8080;
}
ip_hash模式会根据来源IP和后端配置来做hash分配,确保固定IP只访问一个后端。

测试ip_hash(确保固定IP只访问一个后端):
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值