IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Centos7下Nginx的安装与配置 -> 正文阅读

[系统运维]Centos7下Nginx的安装与配置

Centos7下Nginx的安装与配置

一、安装

1、下载

nginx官网下载地址,下载nginx-1.20.2.tar.gz,并将其上传至centos,我这里上传到了/usr/local/src/目录下

2、解压

cd /usr/local/src/
tar -zxvf nginx-1.20.2.tar.gz

解压后,会多个nginx-1.20.2目录

3、依赖安装

# 依赖yum安装
yum install -y openssl-devel pcre-devel gcc

4、Nginx编译安装

# 切换到nginx-1.20.2目录
cd nginx-1.20.2/

# 预编译,默认安装位置/usr/local/nginx
./configure

# 安装
make & make install

# 安装默认位置为/usr/local/nginx

5、启动

# 切换到sbin目录
cd /usr/local/nginx/sbin

# 执行
./nginx

# ----------其他命令-------------
# 停止
./nginx -s stop
# 退出
./nginx -s quit
# 重启
./nginx -s reload
# ----------其他命令-------------

6、访问

默认80端口,浏览器访问http://你的ip,如果出现**Welcome to nginx!**字样,则恭喜你,Nginx基本的安装已经完成。

接下来我们解决几个小问题 开机自启动任意位置执行nginx命令

优化一、开机自启动

# 修改
vi /etc/rc.local

# 追加一行,保存退出
/usr/local/nginx/sbin/nginx

# 添加执行权限
cd /etc
chmod 755 rc.local

重启尝试浏览器访问nginx,如果出现**Welcome to nginx!**字样,则恭喜你,开机自启动好了哦。

优化二、任意位置执行nginx命令

默认启停需要到nginx的sbin目录,或者带完整目录,这样有点麻烦哦,我们配下环境变量,直接nginx即可

# 编辑
vi /etc/profile

# 文末追加环境变量,保存退出
export NGINX_HOME=/usr/local/nginx/sbin
export PATH=$NGINX_HOME:$PATH

# 执行如下命令,让环境变量生效
source /etc/profile

# 尝试如下命令,试试是否成功即可
nginx -s stop
nginx
nginx -s reload

二、配置文件

nginx.conf配置文件在/usr/local/nginx/conf下,配置属性说明如下

# 指定nginx运行用户
#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;	
    # 访问Nginx无法访问的内容,触发下载
    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  logs/access.log  main;

	# 开启传输文件
    sendfile        on;
    #tcp_nopush     on;

	# 当建立TCP连接后,多长时间无动作自动断开
    #keepalive_timeout  0;
    keepalive_timeout  65;

	# 开启压缩
    #gzip  on;

    server {
    	# 端口号
        listen       80;
        # 服务名称
        server_name  localhost;

		# 字符集
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

		# 静态资源
        location / {
        	# 静态资源根目录
            root   html;
            # 静态资源默认访问文件
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

四、常用功能

1、静态网站代理

server {
	listen 80;
	server_name www.xxx.com;
	root /html/test;
	index index.html;
}

2、反向代理

server {
	listen 80;
	server_name localhost
    location / {
        proxy_pass http://192.168.5.6:12301/;   # 注意斜杠
        proxy_set_header HOST $host;            # 在代理过程中添加host头部信息
        proxy_http_version 1.1;                 # http版本配置,1.0 版本不支持长连接
    }
}

3、多配置文件管理

如果所有项目配置都在nginx.conf中配置,则会导致nginx.conf配置文件过于臃肿,可以按项目写配置文件,并导入主配置文件

http {
    # ***
	
    include [conf下自定义的目录]/*.conf;
    
    # ***
}

自定义目录下放着所有server.conf,如:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;
    #location / {
    #    root   html;
    #    index  index.html index.htm;
    #}
    location / {
        proxy_pass http://192.168.5.6:12301;
        proxy_set_header HOST $host;            # 在代理过程中添加host头部信息
        proxy_http_version 1.1;                 # http版本配置,1.0 版本不支持长连接
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   html;
    }
}

4、一个端口代理多个项目

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }

    location /demo1/ {
        proxy_pass http://192.168.5.6:12301/;
        proxy_set_header HOST $host;            # 在代理过程中添加host头部信息
        proxy_http_version 1.1;                 # http版本配置,1.0 版本不支持长连接
    }

    location /demo2/ {
        proxy_pass http://192.168.5.6:12302/;
        proxy_set_header HOST $host;            # 在代理过程中添加host头部信息
        proxy_http_version 1.1;                 # http版本配置,1.0 版本不支持长连接
    }


    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
      root   html;
    }
}

5、负载均衡

  • 简单示例

    upstream us_demo {
        server 192.168.5.6:12301 weight=3;
        server 192.168.5.6:12302 weight=1;
    }
    
    server {
        # *** 
        #
    	
        location /demo/ {
            proxy_pass http://us_demo/;
            proxy_set_header HOST $host;            # 在代理过程中添加host头部信息
            proxy_http_version 1.1;                 # http版本配置,1.0 版本不支持长连接
        }
        
        #
        # *** 
    }
    
  • 负载均衡的几种方式

    # 负载均衡方式一:轮询。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
    upstream us_demo {
        server 192.168.5.6:12301;
        server 192.168.5.6:12302;
    }
    
    # 负载均衡方式二:权重。指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
    upstream us_demo {
        server 192.168.5.6:12301 weight=3;
        server 192.168.5.6:12302 weight=1;
    }
    
    # 负载均衡方式三:ip_hash。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
    upstream us_demo {
        ip_hash;
        server 192.168.5.6:12301;
        server 192.168.5.6:12302;
    }
    
    # 负载均衡方式四:fair(第三方)。按后端服务器的响应时间来分配请求,响应时间短的优先分配
    upstream us_demo {
        server 192.168.5.6:12301;
        server 192.168.5.6:12302;
        fair;
    }
    
    # 负载均衡方式五:url_hash(第三方)。按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
    upstream us_demo {
        server 192.168.5.6:12301;
        server 192.168.5.6:12302;  
        hash $request_uri;  
        hash_method crc32; 
    }
    
  • 负载均衡 server后缀状态说明

    # 1.down 表示单前的server暂时不参与负载  
    # 2.weight 默认为1.weight越大,负载的权重就越大。  
    # 3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误  
    # 4.fail_timeout:max_fails次失败后,暂停的时间。  
    # 5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
    upstream bakend{
        server 192.168.5.6:12301 down;
        server 192.168.5.6:12302 weight=2; 
        server 192.168.5.6:12303 max_fails=3; 
        server 192.168.5.6:12304 fail_timeout=1000; 
        server 192.168.5.6:12305; 
        server 192.168.5.6:12306 backup;
    }
    
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:57:31  更:2022-04-09 18:59:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:26:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码