nginx 安装配置

目录

1. 创建 nginx 文件 

2. 环境准备 

3.下载 tengine 安装包,

4.文件解压缩

5. 系统测试和软件安装配置

6.编译 安装

安装的问题

7.修改配置文件:

7.1:nginx worker进程所有者 

7.2:连接数量,文件描述符配置

7.3;日志格式 

7.4;零拷贝 

7.5:是否立即执行请求 

7.6: 保持连接的超时时间

7.7:压缩

7.8: server

7.9: location 

7.10: 基于反向代理的负载均衡

7.11:http  和 https 

8: 加载配置文件

9. session不同步

10. http协议

10.1  uri  : 客户端浏览器支持的大概是2000个字节,0.25kb

10.2  请求头 : 几十k~几百M(客户端)

10.3  请求体(nginx,默认是 1M)


nginx

CPU 有几个内核 nginx 可以启动几个进程

1. 创建 nginx 文件 

/etc/init.d 下新建一个 nginx 文件,文件内容,从网上查找

给 nginx 文件赋予可执行权限

server nginx start  可以正常的启动nginx 服务

chkconfig: - 85 15
-       :   表示启动级别1-5,默认都是off,可以用具体的数字来指定,例如:345
85 15   :   表示启动和关闭系统时该服务的优先级

2. 环境准备 

3.下载 tengine 安装包,

tengine 是淘宝对nginx 进行包装后的产物,相对来说比nginx 的负载更多

官方下载地址: http://tengine.taobao.org/download.html

4.文件解压缩

tar -xvzf xxxxxxxx.tar.gz

5. 系统测试和软件安装配置

./configure 进行系统测试

--prefix=/opt/yang_zzu/nginx 安装配置

6.编译 安装

make && make install

-------------------------------------------------------------------------------

安装的问题

首先要保证 httpd 服务没有开启,即,访问 80 端口无法访问。

nginx 使用的也是 80 端口,所以要先停止 httpd 服务。

这个是 tnginx 官方安装文档,感觉作用不是很大

http://tengine.taobao.org/documentation_cn.html

nginx官方安装文档,按照这个安装,可以正常的运行,但是操作比较麻烦,不能直接将服务进行重启,或者停止

http://tengine.taobao.org/nginx_docs/cn/docs/install.html

解压后直接使用这条命令进行安装

./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid

./configure

--sbin-path=/usr/local/nginx/nginx    设置nginx可执行文件的完整路径

--conf-path=/usr/local/nginx/nginx.conf   设置配置文件nginx.conf的完整路径

--pid-path=/usr/local/nginx/nginx.pid 

tnginx被安装在 /usr/local/nginx 目录下

通过在网上创建 /etc/init.d/nginx 文件,使用 service nginx start 也是无法进行启动操作。

--------------------------------------------------------------------------------

7.修改配置文件:

配置文件的地址为 :--prefix=/opt/yang_zzu/nginx

nginx 是模块化的软件,支持热部署,热加载,热升级

worker 进行用来处理连接,如果配置文件修改了,由worker的父进程master 读取新的配置 ,再创建一个worker进程,由新的worker 进程接收新的进程,老的 worker 进程将之前所有的连接请求处理完之后销毁该进程。

7.1:nginx worker进程所有者 

worker 进程,需要手动指定进程的创建人,防止nginx 被入侵后拿到该进程用户的所有权限进行其他操作。

7.2:连接数量,文件描述符配置

系统1G 内存的机器上可以打开的文件数大约是10万

一个进程的文件描述符也有约束

修改系统进程一个进程的文件描述符的个数

ulimit -SHn 4096

客户端最大的连接数量:

max_clients = worker_processes * worker_connections / 4 

客户端在进行连接的时候,会创建一个文件描述符,在使用事件的时候,会有个事件描述符

nginx 在进行反向代理的时候,客户端会和 nginx 服务器进行两个文件描述符的创建,nginx 服务器又会和 server 服务器进行两个文件描述符创建

所以这里要 除以 4 

 

7.3;日志格式 

7.4;零拷贝 

sendfile on 开启零拷贝

 指计算机在网络上发送文件时,不需 要将文件内容拷贝到用户空间(User Space)而直接在内核空间(Kernel Space )中传输到网络的方式

减少用户态和内核态的切换,

正常的请求流程,连个 i/o 操作,两次用户态内核态切换

sendfile 零拷贝, 一次内核态用户态切换

7.5:是否立即执行请求 

tcp_nopush on;  开启后请求不会立即的执行,而是等到tcp缓冲满了之后,再发送(针对惊天文件)

7.6: 保持连接的超时时间

keepalive_timeout 65; 保持连接的超时时间

7.7:压缩

gzip on; 开启压缩,如果传输的是大的文本数据,建议开启压缩

7.8: server

-- 虚拟服务器1
server {
        listen       80;
        server_name  www.yang.com;
        location / {
            root   /mnt;   绝对路径,根目录下的 /mnt 
			autoindex on;   自动索引
        }

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

    }

-- 虚拟服务器2
server {
        listen       80;
        server_name  www.yang_zzu.com;
        location / {
            root   html;   相对路径,相对于安装路径
            index  index.html index.htm;
        }

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

    }

7.9: location 

一个 server 里面存在很多的location

官方文档: http://tengine.taobao.org/nginx_docs/cn/docs/

location 在进行匹配的时候,使用的是 “最大前缀匹配“ 和 “绝对匹配” 

普通location, 是要全部进行一次匹配操作,找出匹配度最高的一个

正则location,只要匹配到第一个就停止后面的匹配

www.baidu.com/index/abc/110.index     ---URL 请求

 在进行动态代理的时候,

普通匹配,动态代理的地址后面可以跟有路径地址,

1. 动态代理的地址后面有 uri

匹配成功的字符串会被删除掉,然后将剩余的内容拼接到动态代理的路径后面

2. 动态代理的地址后面没有 uri

匹配成功后,会直接将 uri 拼接到 动态代理的地址后面 

正则匹配,动态代理的地址后面不能跟有路径地址,

server {
        listen       80;
        server_name  www.yang_zzu.com;
        location / {
            root   html;   相对路径,相对于安装路径
            index  index.html index.htm;
        }
		-- 访问的地址 www.yang_zzu.com/abc.go
		-- 动态代理的访问地址为 http://192.168.232.100/efg/index.html;
		location /abc.go {
			proxy_pass http://192.168.232.100/efg/index.html;
		}
		
		-- 访问的地址为 www.yang_zzu.com/aaa.go/ccc.html
		-- 动态代理的结果为:http://192.168.232.100/bbb/ccc.html
		location /aaa.go {
			proxy_pass http://192.168.232.100/bbb;
		}
		
		-- 访问的地址为 www.yang_zzu.com/bbb.go/bbb.html
		-- 动态代理的结果为:http://192.168.232.100/bbb.go/bbb.html
		location /bbb.go {
			proxy_pass http://192.168.232.100;
		}
		
		-- 访问的地址为 www.yang_zzu.com/aaa/bbb/ccc/ddd.go
		-- 正则匹配的时候,动态代理的地址不能带有路径
		-- 动态代理的访问地址为:http://192.168.232.100
		location ~* \.go$ {
			proxy_pass http://192.168.232.100;
		}

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

    }

7.10: 基于反向代理的负载均衡

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    #tcp_nopush     on;

	-- 试验时,将超时连接设置为 0 
    #keepalive_timeout  0;
	-- 在进行试验的时候,将保持超时连接注释掉,这样才能看到负载均衡的结果
    #keepalive_timeout  65;

    #gzip  on;

    -- 负载均衡 ,集群服务器,bula 集群名称
    -- 可以设置每个服务器的权重 server    192.168.183.150:8080  weight=1;
	upstream bula{
		server 192.168.232.100;
		server 192.168.232.101;
		server 192.168.232.102;
		server 192.168.232.103;
	}
	
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
		-- 基于负载均衡的动态代理,代理的ip为负载均衡的集群服务器
		location /aaa.go {
			proxy_pass http://bula/bbb;
		}
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
    }

}

 

7.11:http  和 https 

如果使用http://www.baidu.com/ 进行动态代理,则地址栏中的显示的请求地址为 www.baidu.com

server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
		-- 访问 www.yang_zzu.com/aaa.go 
		-- 动态代理的地址为 https://www.baidu.com/
		-- 使用 https 请求,地址栏中显示的请求地址还是www.yang_zzu.com/aaa.go
		-- 显示的内容是百度主页
		location /aaa.go {
			proxy_pass https://www.baidu.com/;
		}
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
    }

 添加默认网关,否则不识别动态代理的 www.baidu.com 这个地址

 

8: 加载配置文件

service nginx reload 重新加载配置文件资源

 

9. session不同步

负载均衡的时候,server服务器中 session 中的内容不同步,

在进行动态代理的时候会导致不同的服务器响应,服务器1里面没有session 信息进行一次登录,服务器2里面没有session 信息又进行一次登录。

重现步骤;

1. 安装tomcat

2. 修改webapps/ROOT 目录下的 index.jsp 

from 192.168.232.100<br>session=<%=session.getId()%>

3.将 tomcat 分发到其他节点进行相同的配置

4.启动 tomcat

session 存储可以是redis, memcached 等

1.在做 seesion 存储的那台服务器上安装 memcached

2. 修改tomcat 配置文件 /conf/context.xml

10. http协议

10.1  uri  : 客户端浏览器支持的大概是2000个字节,0.25kb

请求地址: ip + 端口 + uri

10.2  请求头 : 几十k~几百M(客户端)

请求头,一般情况下,也不用专门的去进行设置

1.正常的配置 server 外面进行配置(一般使用这个就可以了)

client_header_buffer_size 256k;
large_client_header_buffers 4 256k;

client_header_timeout  (可以设定超时时间,一般情况下也不用手动设置) 

2.server 里面进行配置(不建议使用这种,比较绕)

nginx在处理header时实际分配的buffer大小,是解析conf后,default_server中的最终值。

这个时候,large_client_header_buffers 的大小为 1M

 

10.3  请求体(nginx,默认是 1M)

client_max_body_size     100m; 

client_body_timeout  设置超时时间(如果不是惊天大文件,一般不用进行设置)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值