nginx

1.安装:

利用源码安装nginx服务器:https://www.cnblogs.com/pjishu/p/11029085.html,先别启动,只完成前5点

2.写一个脚本

cd /etc/init.d/

vi nginx

把下面东西放进去:

#!/bin/bash
# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings
NGINX_SBIN="/opt/sxt/nginx/sbin/nginx"
NGINX_CONF="/opt/sxt/nginx/conf/nginx.conf"
NGINX_PID="/opt/sxt/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"
start() {
echo -n $"Starting $prog: "
mkdir -p /dev/shm/nginx_temp
daemon $NGINX_SBIN -c $NGINX_CONF
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -TERM
rm -rf /dev/shm/nginx_temp
RETVAL=$?
echo
return $RETVAL
}
reload(){
echo -n $"Reloading $prog: "
killproc -p $NGINX_PID $NGINX_SBIN -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
configtest(){
$NGINX_SBIN -c $NGINX_CONF -t
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
configtest)
configtest
;;
*)
echo $"Usage: $0 {start|stop|reload| 
restart|configtest}"
RETVAL=1
esac
exit $RETVAL

再赋权:chmod +x nginx

开启:service nginx start

随后:cd /opt/sxt/nginx/conf 该目录有nginx的文件。vi nginx.conf,观察:

work_processes 1 : 表示有一个工作进程,其实nginx的进程个数==CPU核心数。另开一个窗口输入ps -fe | grep nginx,可以发现:该work进程由mast_processs读nginx.conf文件创建生成,且负责客户端的连接请求。

输入:ulimit -a  看到open files:1024,表示一个进程可以创建1024个文件描述符,也就是只能开启最多1024个io流,通过观察nginx.conf,发现事实上不能和客户端创建超过1024个连接。

说明:nginx.conf中的send file  on指的是:在内核新造2个文件描述符,当要回复客户端的链接时,内核通过文件描述符从磁盘拿出东西来,不用再给用户空间的Nginx了,而是直接通过另一个文件描述符把内容输出到网线,这样更快捷。tcp_onpush on 表示开启缓存机制。keepalive_timeout:保持第一次链接的时间。gzip:on表示服务器要发出去东西时,先压缩起来,再传到网线里面。server表示一个虚拟的web服务器,当外面的客户端浏览器输入网址后,window的hosts文件将其转化为ip(若没有,则去互联网的域名服务器搜索),随后给到nginx,nginx根据ip,port(server里面的listen),和host(http请求头会给出,对应到nginx.conf的server_name)。

server里面的location表示的是,服务器的资源在哪里,当浏览器输入的url和location匹配时,去磁盘对应的位置去取出来。

nginx_第1张图片

nginx_第2张图片

小知识点:当在xshell里面输入ls+回车时,这三个字节会变成一个数据包发给Linux服务器,Linux解析里面的字符串,再交给bash,bash启动了ls之后,把该目录的内容作为数据包发回window客户端,然后xshell解析数据包最后输出到屏幕。

小知识点:!ser:会在历史输入的命令当中,从后向前找到名字开头是ser的命令,然后执行。

实验(未完成,p33节也没看):

修改server_name为:www.aaa.com,同时修改Windows的hosts文件,再添加一个location:

location /asd {

  proxy_pass http://192.168.9.12/;

}

意思是:让node01作为代理服务器,当输入wwww.aaa.com/asd时,node01的nginx根据www.......com拿到请求,随后把后面的作为location去匹配,然后转到node02,然后node02返回资源的结果,此时nginx起着反向代理的作用。

不过,为了防止node02因为访问压力过大,要将链接均分配给其他服务器,需要在http{里面server{外面,添加定义upstream:

upstream asd(作为upstream的随便一个名字){

  server 192.168.10.12;

  server 192.168.10.13;

}

然后改动之前的location:

location /asd {

  proxy_pass http://asd/;

}

再讲keepalive 那行注释掉,以禁止客户端和服务器的绑定。

3.

加一个location:

location /aaa {

  proxy_pass http://www.baidu.com/;

}

当客户端请求时,先去看看upstream,如果不是,再去dsn,不过,此时可能会报错,因为可能缺少默认网关,补上:

route add default gw 网关ip

此时:!ser重启服务。然后客户端浏览器访问:https://www.aaa.com/aaa,会出现百度页面,此时网址栏不会发生变化(因为如果是http,那么在nginx代理完后,百度返回的是一个https,然后客户端得拿https去访问百度,使得地址栏发生变化)。

4.

先利用xftp把Apach包传进node02

 

你可能感兴趣的:(nginx)