5.1nginx的安装
Posted L12345
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.1nginx的安装相关的知识,希望对你有一定的参考价值。
一、 安装要求的环境
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
第四步:使用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目录
[root@localhost sbin]# ./nginx
访问的默认端口是80端口。注意:看是否关闭防火墙。
四、 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; }
以上是关于5.1nginx的安装的主要内容,如果未能解决你的问题,请参考以下文章
Nginx——Nginx启动报错Job for nginx.service failed because the control process exited with error code(代码片段