zl程序教程

您现在的位置是:首页 >  其他

当前栏目

nginx的安装与配置

2023-09-27 14:28:03 时间

1    检查gcc编译器

检查所在linux有没有gcc编译器,若没有执行如下命令:

yum install -y gcc-c++ 

用于后边的文件编译

2    安装包及依赖下载

服务器有网情况

Nginx安装包:wget  http://nginx.org/download/nginx-1.12.2.tar.gz

依赖包:pcre,zlibopenssl

wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz

wget http://www.zlib.net/fossils/zlib-1.2.11.tar.gz

wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz

服务器无网情况:

在本地电脑分别打开以下网站下载对应稳定的安装包

http://nginx.org/download/

https://ftp.pcre.org/pub/pcre/

http://www.zlib.net/fossils/

https://www.openssl.org/source/

上传到服务器进行解压

tar –zxvf  nginx-1.12.2.tar.gz   tar –zxvf  pcre-8.41.tar.gz

tar –zxvf  zlib-1.2.11.tar.gz  tar –zxvf  openssl-1.1.0g.tar.gz

3    编译安装

1)      安装pcre库

cd pcre-8.41进入解压的目录

[root@nginx01 pcre-8.41]# ./configure

[root@nginx01 pcre-8.41]# make

[root@nginx01 pcre-8.41]# make install

2)      安装zlib库

cd  zlib-1.2.11进入解压的目录

[root@nginx01 zlib-1.2.11]# ./configure

[root@nginx01 zlib-1.2.11]# make

[root@nginx01 zlib-1.2.11]# make install

 

3)      安装openssl库

cd openssl-1.1.0g进入解压的目录

[root@nginx01 openssl-1.1.0g]# ./config

[root@nginx01 openssl-1.1.0g]# make

[root@nginx01 openssl-1.1.0g]# make install

 

4)      安装nginx

cd nginx-1.12.2进入解压的目录,--prefix参数可省略

[root@nginx01 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

[root@nginx01 nginx-1.12.2]# make

[root@nginx01 nginx-1.12.2]# make install

注意:确保以上每一步命令的执行没有报错才能进行下一步操作

4    启动与停止

启动nginx:/usr/local/nginx/sbin/nginx

停止nginx:/usr/local/nginx/sbin/nginx -s stop

重新加载配置:/usr/local/nginx/sbin/nginx -s reload

 

5    反向代理及负载配置

 

负载均衡大致有五种模式:

1)      轮询模式(roundrobin):轮询方式,默认的负载均衡方式。依次将请求分配到各个后台服务器中,适用于后台机器性能一致的情况。挂掉的机器可以自动从服务列表中剔除。

2)      权重模式(weight):指定权重,weight和访问比率成正比,用于后端服务器性能不均的情况。

3)      Ip哈希算法(ip_hash):如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。这样每个访客固定访问一个后端服务器,可以解决session的问题。

4)      url哈希算法(url_hash-第三方):按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效

5)      响应时间(fair-第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配

 

通过修改nginx配置文件nginx.conf,如下:

#user  nobody;
worker_processes  1;#工作进程,依据CPU核数而定

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info; #error日志路径
pid        logs/nginx.pid; #pid路径
events {
    worker_connections  1024;#单个worker_processes能承受的最大并发链接数
}

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  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;#是否开启gzip压缩
    server_tokens off;#隐藏nginx版本
    #负载均衡,内网服务器
    upstream mycluster {
        server 192.168.100.71:8080 weight=3;
        server 192.168.100.72:8080 weight=4;
        server 192.168.100.73:8080 weight=3;
        #ip_hash;
    }

    #http server方式
    server {
        listen       80;
        server_name  abc.com;
        #charset koi8-r;
        access_log  logs/host.access.log  main;
        location / {
            #代理内网服务器,mycluster名字要和upstream后面的mycluster名字一样
            proxy_pass      http://mycluster; 
            proxy_set_header       Host $host;#客户端的主机名
            proxy_set_header X-Real-IP $remote_addr; #web服务器端获得用户的真实ip
            # 转发客户端真实ip,特别是多nginx代理
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
        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;
        }

    } 
    
    #https证书加密配置,同时支持http,https访问,监听80,443端口
    server {
        listen 80;
        listen 443   ssl;
        server_name  abc.com;
        
        ssl_certificate   /usr/local/nginx/cert/214110615420891.pem; #证书路径
        ssl_certificate_key  /usr/local/nginx/cert/214110615420891.key; #证书key路径
        #服务器所支持的密码格式,命令:openssl ciphers可以查看服务器支持的密码格式
        ssl_ciphers  ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #默认是此,可省略此项
        #优先使用服务端的加密套件,而非客户端浏览器的加密套件,默认off,可以省略此项
        ssl_prefer_server_ciphers  on;
        #access_log  logs/host.access.log  main;#日志路径
        location / {
            proxy_pass      http://mycluster;
            proxy_set_header       Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_redirect http:// $scheme://;#当http协议访问时自动转换成HTTPS协议
            if ( $server_port = 80 ){ #http访问,重写为https路径访问
                    rewrite ^(.*) https://$server_name$1 permanent;
            }
        }
        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;
        }
    }   
}