linux上nginx的安装

官方网站:http://nginx.org/

镜像下载:https://mirrors.huaweicloud.com/nginx/

 

一、 安装要求的环境

1、需要安装gcc的环境。

  yum -y install gcc-c++

2、第三方的开发包。

a) PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

  yum install -y pcre pcre-devel

  注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

b) zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

  yum install -y zlib zlib-devel

c) OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

  nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

  yum install -y openssl openssl-devel

 

 

二、安装步骤

第一步:把nginx的源码包上传到linux系统
第二步:解压缩 [root@localhost
~]# tar zxf nginx-1.8.0.tar.gz
第三步: 目录指定为
/var/temp/nginx,需要在/var下创建temp及nginx目录: mkdir /var/temp/nginx/client -p
第四步:进入解压后的nginx目录,执行以下所有命令(以下目录名称根据需求自行修改),使用configure命令创建一makeFile文件。 .
/configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi [root@localhost sbin]# mkdir /var/temp/nginx/client -p 第五步:执行编译命令:make 第六步:make install

三、 启动nginx

1.查看安装目录

 

 2.进入到sbin目录,启动命令:./nginx 

[root@localhost sbin]# ./nginx 

访问的默认端口是80端口。注意:看是否关闭防火墙。

 

3.启动后访问index.html页面

1)linux本地访问

 

2) windows上访问

 

 

四、 nginx的常用命令

前提首先先进入安装目录:
查看版本
./nginx -v
启动命令
./nginx
关闭命令 .
/nginx -s stop 和 ./nginx -s quit
刷新配置文件 .
/nginx -s reload 修改了nginx.conf文件之后,可以不重启Nginx,能马上生效

 

 

五、 nginx配置虚拟主机

1、Nginx的配置文件(nginx.conf)配置项解释如下:

  /usr/local/nginx/conf/nginx.conf

#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_connections  1024;
}

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;

    server {    // 一个server节点就是一个虚拟主机
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;    //Html是nginx安装目录下的html目录
            index  index.html index.htm;
        }
    }

    server {   //一个server节点就是一个虚拟主机

      listen 80; //监听的端口号
      server_name www.xxxx.com; //浏览器地址栏访问使用的域名
        location / {

          //客户端获取ip为127.0.0.1处理方法,添加以下4个 proxy_set_header
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header REMOTE-HOST $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

          client_max_body_size 2048m;  //设置文件上传最大限制 2G
          proxy_pass http://localhost:8081; //想要转发到自己的服务器端口,即tomcat服务器对应的端口号
          index index.jsp index.html index.htm;
        }
      }

}

 

六、反向代理实例

监听9001端口,实现如下效果:
访问:http://192.168.1.1:9001/deu/  (访问路径带:deu)跳转到tomcat1服务器,即127.0.0.1:8081
访问:http://192.168.1.1:9001/vod/  (访问路径带:vod)跳转到tomcat2服务器,即127.0.0.1:8082


server {   //一个server节点就是一个虚拟主机

   listen 9001; //监听的端口号
   server_name 192.168.1.1; 

   location ~ /edu/ {
     proxy_pass http://localhost:8081;
   } 

   location ~ /vod/ {
     proxy_pass http://localhost:8082;
   } 
}


location 指令说明:
标识符   描述
  =    精确匹配;用于标准uri前,要求请求字符串和uri严格匹配。如果匹配成功,就停止匹配,立即执行该location里面的请求。
  ~    正则匹配;用于正则uri前,表示uri里面包含正则,并且区分大小写。
  ~*    正则匹配;用于正则uri前,表示uri里面包含正则,不区分大小写。
  ^~    非正则匹配;用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束,该模式匹配成功后,不会使用正则匹配。
  无    普通匹配(最长字符匹配);与location顺序无关,是按照匹配的长短来取匹配结果。若完全匹配,就停止匹配。

 

 

七、负载均衡配置

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;
    
    #配置需要转发的两个服务器地址,“myserver”为自行定义的名称
    upstream myserver{
    #默认轮询方式
        server 192.168.1.1:8081;
        server 192.168.1.1:8082;
        
        #权重方式
        #server 192.168.1.1:8081 weight=5;
        #server 192.168.1.1:8082 weight=10;
        
        #ip_hash方式
        #ip_hash
        #server 192.168.1.1:8081;
        #server 192.168.1.1:8082;
        
        #fair方式
        #server 192.168.1.1:8081;
        #server 192.168.1.1:8082;
        #fair;

    }

    server {    #一个server节点就是一个虚拟主机
        listen       80;
        server_name  192.168.1.1;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://myserver; #填写自己定义的名称
            #root   html;    #Html是nginx安装目录下的html目录
            #index  index.html index.htm;
        }
    }
}

 

nginx提供的几种分配方式(策略)
1.轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器中,
    如果后端报服器down掉,能自动剔除
    upstream myserver{
        server 192.168.1.1:8081;
        server 192.168.1.1:8082;
    }
    
2.weight(权重方式)
    默认为1,权重越高被分配到的请求越多
    upstream myserver{
        server 192.168.1.1:8081 weight=5;
        server 192.168.1.1:8082 weight=10;
    }
        
3.ip_hash方式
    每个请求按访问的ip的hash结果分配,这样每个客户端固定访问一个
    后端服务器,可以解决session共享问题
    upstream myserver{
        ip_hash;
        server 192.168.1.1:8081;
        server 192.168.1.1:8082;
    }
    
4.fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配
    
    upstream myserver{
        server 192.168.1.1:8081;
        server 192.168.1.1:8082;
        fair;
    }

 

八、旧域名重定向到新的域名 

server {  
    listen 80;  
    server_name http://www.old.com; #旧的域名
    #重定向到新的域名     
    rewrite ".*" http://www.new.com;
} 

 

posted @ 2020-02-29 11:57  L12345  阅读(148)  评论(0编辑  收藏  举报