热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

nginx的安装和负载均衡例子(RHEL/CentOS7.4)

首先安装RHELCentOS7.4mini,然后关闭防火墙和selinux,更新系统(参看配置linux使用本地yum安装源和Redhat7CentOS7关闭防火墙和selinux两个

首先安装RHEL/CentOS7.4 mini ,然后关闭防火墙和 selinux ,更新系统(参看配置linux使用本地yum安装源和Redhat7/CentOS7 关闭防火墙和 selinux两个笔记)

 nginex分为稳定版(stable vision)和主线版(mainline vision),生产服务器上使用稳定版,以下例子所使用的是1.14稳定版。

  • 安装
    • 1、增加/etc/yum.repos.d/nginex.repo文件(这一步可能不需要):
    • 2、安装必要的第三方程序:
    • 3、下载稳定版的nginx解压出来:
    •  4、进入目录安装:
    • 5、启动服务
    • 6、检查服务是否启动:
    • 7、nginx的命令参数
  • 建立nginx的后台服务
  • nginx一般http负载均衡配置(内附注释)
  • 用OpenSSL生成SSL使用的 Crt和key文件
    • 1、生成CA和server的key文件,要记住密码(参考密码:a1b2c3d/)
    • 2、用CA的key来生成CA的crt证书:
    • 3、生成服务器端的证书
    • 4、最后,可以选择吧私钥和SSL证书合并成*.pem文件
  • nginx 自动把访问http的请求转换到https(内附注释)

 安装

1、增加/etc/yum.repos.d/nginex.repo文件(这一步可能不需要):

vi /etc/yum.repos.d/nginex.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/  #OS =rhel 或者CentOS,

                     #OSERLEASE=版本号,5、6、7等,$basearch=硬件架构如x86_64等,

                     #建议输入http://nginx.org/packages/查看下目录结构
gpgcheck=0
enabled=1

 

2、安装必要的第三方程序:

yum install gcc gcc-c++

yum insall pcre*

yum install openssl-devel

 

3、下载稳定版的nginx解压出来:

wget http://nginx.org/download/nginx-1.14.0.tar.gz

tar -zvxf nginx-1.14.0.tar.gz

 4、进入目录安装:

cd nginx-1.14.0

./configure --prefix=/usr/local/nginx     #设定nginx的安装路径为/usr/local/nginx

详细安装参数见:nginx ./configura 参数说明

 

#如果你需要安装一些模块,必须在./configure 里面指明,比如:

./configure --prefix=/usr/local/nginx   ----with-http_stub_status_module \    #监控模块

--with-poll_module  \  #轮询模块

--with-threads   \  #多线程模块

--with-http_stub_status_module  \  #状态管理模块

#然后安装

make

make install

 

5、启动服务

cd /usr/local/nginx/sbin

./nginx    #启动服务

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx  #在SBIN目录中建立静态链接,就直接输入nginx就可以运行程序了

6、检查服务是否启动:

ss -napt | grep 80       #检查80端口是否在侦听

ps -ef | grep nginx       #检查nginx进程是否在后台跑

curl 127.0.0.1        #看返回的结果是否有“Welcome to nginx!”字样,有就成

     #功了。

./nginx -s reload          #如果做了修改,这是重启服务的方法。

 

测试配置文件是否有错:   nginx -t    (已经在/usr/sbin目录中建好映射,没有的话请到安装目录下运行  ./nginx -t)

 

参考 建立nginx的后台服务

 

7、nginx的命令参数

Options:

  -?,-h         : this help帮助

  -v            : show version and exit 显示版本不执行

  -V            : show version and configure options then exit显示版本及配置项(没什么用)

  -t            : test configuration and exit测试配置并退出

  -T            : test configuration, dump it and exit测试配置,不应用配置,退出

  -q            : suppress non-error messages during configuration testing

  -s signal     : send signal to a master process: stop, quit, reopen, reload

  -p prefix     : set prefix path (default: /usr/local/nginx/)

  -c filename   : set configuration file (default: conf/nginx.conf)指定运行的配置文件

  -g directives : set global directives out of configuration file

建立nginx的后台服务

用chkconfig定义后台服务

 

用systemctl定义后台服务

测试配置文件是否有错:   nginx -t    (已经在/usr/sbin目录中建好映射,没有的话请到安装目录下运行  ./nginx -t)

服务操作:

nginx -s reload(重启服务)

nginx(启动服务)

nginx -s stop (停止服务)

虽然可以用service 或者systemctl来启停服务,但必须养成修改配置后,先测试配置文件是否通过的习惯。如果配置文件有错,不测试直接重启服务会导致服务停止。

nginx一般http负载均衡配置(内附注释)

nginx.conf 位于: /usr/local/nginx/conf目录中

一个例子

vim nginx.conf

 

#user  nobody;   #关闭了非特权用户启动

worker_processes  3;  #与CPU核心数相等

 

#error_log  logs/error.log;   #这几个是日志的级别,如果不记日志就关掉

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

pid        logs/nginx.pid;  #PID文件

 

events {

    worker_connections  1024;    #最大连接数,每个worker只支持1024个链接

}

 

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;   #连接保持时间65秒

 

    upstream ltwww {   #一个服务器池

    server 192.168.4.106:80;   #池中的节点地址和端口号

    server 192.168.4.107:80;

    server 192.168.4.108:80;

    server 192.168.4.109:80;

    }

    server {    #一个对外服务,提供ltwww.kefangapp.com:80端口的对外服务

listen 80;    #侦听端口

server_name ltwww.kefangapp.com;    #绑定的域名

location / {

    proxy_pass http://ltwww    #转发到哪个服务器池

   client_max_body_size 1000m;   #默认上传文件大小是1M,改为1000M。

   proxy_cache off;   #在测试环境中经常改变服务器配置时最好把缓存关闭,以免节点服务器的老配置还存在nginx的缓存中。

    proxy_set_header Host $host;    #设置主机头为绑定的域名

    proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for; #启用x转发

        }

    } 

 

        server {    #在相同域名下以“/目录名/”区分的不同对外应用

                listen 80;

                server_name ltapi.kefangapp.com;   #公共的域名

                location /webapi/ {    #第一个目录

                        proxy_pass http://ltwww;    #转发到对应的节点服务器组中

                        proxy_cache off;   #在测试环境中经常调试所以关闭Cache,生产环境中打开

                        client_max_body_size 1000m;  #允许客户端上传文档限制为1G,默认为1M。

                        proxy_set_header Host $host;   #转发请求的头部

                        proxy_set_header X-Real-IP $remote_addr;  #替换掉远程地址

                        proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for;  

                }

 

                location /wx/ {    #第二个目录

 

                        proxy_pass http://ltwww;

                        proxy_cache off;

                        client_max_body_size 1000m;

                        proxy_set_header Host $host;

                        proxy_set_header X-Real-IP $remote_addr;

                        proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for;

                }

                        location /mjd/ {   #第三个目录

                        proxy_pass http://ltwww;

                        proxy_cache off;

                        client_max_body_size 1000m;

                        proxy_set_header Host $host;

                        proxy_set_header X-Real-IP $remote_addr;

                        proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for;

                }

        }

 

 

    server {    #这是一个状态信息的对外服务,还非常简陋

        listen      80;

        server_name  192.168.10.224;

              location /status {

              stub_status on;

             access_log off;

   }

      #这是一个本地的报错页

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

用OpenSSL生成SSL使用的 Crt和key文件

OpenSSL包含在RHEL7.4的光盘中,把光盘做成安装源就能安装,而且一般都在最小安装里面包含了。

 

mkdir SSL-KEY  #新建一个文件来存放各种证书文件

cd SSL-KEY  #进入目录

 

证书一般用到三个文件:*.key(私钥文件) *.crt(证书文件)  *.csr(证书请求文件)

 

步骤如下:

1、生成CA和server的key文件,要记住密码(参考密码:a1b2c3d/)

openssl genrsa -des3 -out CA.key 2048   #加密算法是des3,openssl格式,2048位强度,名为CA.key

 

#如果要去除key文件的密码(前提是你还记得它的密码)多一步操作:

openssl rsa -in CA.key -out CA.key    #在输入密码后就能得到一个无密码保护的key文件

 

#生成server端(ltwww.kefangapp.com)的key文件,并去除密码:

openssl genrsa -des3 -out ltwww.kefangapp.com.key 2048

openssl rsa -in ltwww.kefangapp.com.key -out ltwww.kefangapp.com.key

 

2、用CA的key来生成CA的crt证书:

openssl req -new -x509 -key CA.key -out CA.crt -days 7300   #生成x509证书,使用CA.key私钥进行签名,证书名为CA.crt,有效期7300天(20年)。

#在生成证书过程中还会让你输入:国家代码(CN),省/州(GuangDong)/城市(ShenZhen)/组织机构(CA)/机构名称(CAB)/公开名称(CAB.CA.com)/电邮地址(admin@CA.com)

 

3、生成服务器端的证书

#生成证书的请求(*.csr文件)

openssl req -new -key ltwww.kefangapp.com.key -out ltwww.kefangapp.com.csr   #用对应的私钥生成对应的证书请求文件

#生成证书(*.crt文件),也就是用CA的证书来签名之后的文件

openssl x509 -req -days 3650 -in ltwww.kefangapp.com.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out ltwww.kefangapp.com.crt    #生成x509证书,有效期10年,在证书的请求文件上加上CA的证书和私钥,输出成*.crt的证书文件

 

4、最后,可以选择吧私钥和SSL证书合并成*.pem文件

cat ltwww.kefangapp.com.key ltwww.kefangapp.com.crt > ltwww.kefangapp.com.pem

nginx 自动把访问http的请求转换到https(内附注释)

本说明需要使用证书,证书生成方法见:用OpenSSL生成SSL使用的 Crt和key文件

 cat nginx.conf

#user noboy;

worker_processes 3;   #处理器核心数量

error_log logs/error.log info;    #日志级别info

pid logs/nginx.pid;   #把进程ID号写到此文件中

 

events {

        worker_connections  1024;   #max for 1024   定义最大连接数

}

 

http {   #这是一个http的负载均衡,

        include mime.types;   #定义mime的类型

        default_type application/octet-stream;

        sendfile on;

        keepalive_timeout 65;   #连接活动时间,超时会关闭

 

        upstream ltwww {    #定义节点服务器组的名称,以及内部的节点

                server 192.168.4.106:80;

        }

        server {   #定义一个对外接受访问的http服务器

                listen 443 ssl;    #侦听443端口,也就是接受HTTPS访问的参数

                server_name ltwww.kefangapp.com;  #接受访问请求的绑定域名

                ssl on;    #打开SSL

                ssl_certificate SSL-KEY/ltwww.kefangapp.com.pem;   #SSL证书的位置

                ssl_certificate_key SSL-KEY/ltwww.kefangapp.com.key;  #证书密钥的位置

               

                listen 80;   #还要侦听http 80端口

                if ($scheme = http) {      #如果访问的是80端口

                        return 301 https://$host$request_uri;    #替换成https

                }

                location / {    #请求的转发操作

                        proxy_pass http://ltwww;    #以Http协议转发到ltwww节点服务器组

                        proxy_cache off;    #测试环境关闭Cache,生产环境要打开

                        client_max_body_size 1000m;   #允许上传文件大小一千兆视频没问题

                        proxy_set_header Host $host;  #头部完整保留转发

                        proxy_set_header X-Real-IP $remote_addr;  #IP部分换成服务器内部IP

                        proxy_set_header X-Forwarder-For @proxy_add_x_forwarded_for; #应用转发参数

                }

        }

        error_page 500 502 503 504  /50x.html;   #一个错误页的处理

        location = /50x.html {  root html; }

        }

}


推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
author-avatar
jhb852
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有