Nginx 安装和基本操作
安装
yum install nginx
启动
servic nginx start
停止
service nginx stop
重载
servic nginx reload
安装
安装前可以查询是否已经安装过
sudo yum search nginx
如果需要安装,为了更快安装, 需要将镜像的源添加进来
| 1 2 3 | $ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm $ yum install nginx | 
就很快安装好了, 大小2.5m

和重启restart不同(杀死进程并重新启动), reload 在运行状态下就可以进行服务的重载
运维常用!!! 不会杀死进程就可以更新配置
查看服务状态

查看Nginx的欢迎页面
 
 
配置
查看配置文件
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |  [delucia@www modules]$ vim /etc/nginx/nginx.conf  user nginx;  worker_processes 1;  error_log /var/log/nginx/error.log warn;  pid    /var/run/nginx.pid;  events {    worker_connections 1024;  }  http {    include    /etc/nginx/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 /var/log/nginx/access.log main;    sendfile    on;    #tcp_nopush   on;    keepalive_timeout 65;    #gzip on;    include /etc/nginx/conf.d/*.conf;  } | 
这个主要配置文件
配置了日志存放的位置等信息
也会加载 /etc/nginx/conf.d/*.conf 这些配置文件, 这里默认只有一个default.conf 的文件存在 如下
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | [delucia@www conf.d]$ vim default.conf  server {   listen    80;   server_name localhost;   #charset koi8-r;   #access_log /var/log/nginx/host.access.log main;   location / {      root  /usr/share/nginx/html;     index index.html index.htm;   }   #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  /usr/share/nginx/html;   }   # proxy the PHP scripts to Apache listening on 127.0.0.1:80   #   #location ~ \.php$ {   #  proxy_pass  http://127.0.0.1;   #}   # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000   #   #location ~ \.php$ {   #  root      html;   #  fastcgi_pass  127.0.0.1:9000;   #  fastcgi_index index.php;   #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;   #  include    fastcgi_params;   #}   # deny access to .htaccess files, if Apache's document root   # concurs with nginx's one   #   #location ~ /\.ht {   #  deny all;   #} } | 
可以尝试修改index.html让引导页变得不一样

拓展
虚拟主机
复制一份detault.conf 重命名为niit.conf
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | $ sudo cp default.conf niit.conf $ sudo vim niit.conf server {     listen 80;     server_name www.niit.test;   location {     root    /data/www/ ;     index   index.html index.htm;   } } | 
保存, 访问页面:

页面并没有发生变化, 这是因为修改配置后需要重启或者重载服务
| 1 | $ sudo service nginx reload | 
然后访问 首页就是/data/www/index.html的内容了

按F12打开调试信息:

这个服务器版本明文显示出来是有安全风险的
如果黑客知道某个版本的容器有漏洞那么就会增加他攻击你的概率
可以通过配置屏蔽掉
多端口
多端口也很容易配置

保存并重载nginx服务

多域名
配置多域名也很容易

修改hosts文件

然后重载nginx服务就可以这样访问了

伪静态
NGINX 的伪静态 也就是 重写功夫是默认开启的, 修改 /etc/nginx/conf.d/niit.conf

这样只要路径符合*.htmp都会指向index.html的

日志格式
nginx 的自定义 日志格式

main是日志格式的命名空间, 也就是可以允许定义多个格式
当前格式下的日志信息如下:
| 1 | sudo tail -f /var/log/nginx/access.log | 

tailf、tail-f、tail-F三者区别
taill -f等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tall -F等同于-follow=name--retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf等同于tail -f -n10(貌似tail-f域-F默认也是打印最后10行,然后追踪文件),与tail-f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电
自定义日志格式也很简单, 修改nginx.conf文件 增加niit的命令空间

重载服务后 , 查看日志格式变成

也可以针对不同虚拟主机设置 不同的日志保存位置

浏览网页后日志变成

还有error_log 主要是记录报错信息的
也是一样可以配置的

反向代理和负载均衡
反向代理
中间的机器就是反向代理, 将local机器的请求代理了,实际请求是发向右边三台服务器其中之一

比如要将我的本地虚拟机的nginx容器反向代理到我的博客地址

可以通过这个网站查询我的博客域名的实际ip, 然后配置反向代理如下

这样访问域名www.niit.test时就会被nginx重写请求并指向到我的博客网站了

F12查看网路

负载均衡
当一台服务器无法承受请求量, 可以配置多台服务器
负载均衡就是在配置中配置多个主机, 假设我的博客已经部署到了2个不同主机上
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |  upstream  niit_hosts  {    server  119.23.14.201:80  weight=5;    server  119.23.14.301:80  weight-1;  }  server  {    listen  80;    listen  8080;    server_name  www.niit.test  www.niit2.test;    root  /data/www;    index  index.html  index.htm;    access_log  /var/log/nginx/access_niit.log   niit;    location  /  {      proxy_set_header  Host  www.delucia.cn;      proxy_pass  http://niit_hosts;    }  } | 
其中weight表示使用权重随机算法作为负载均衡的策略, weight的值代表权重
这样会有5/6的请求被随机转发到第一个server
其他1/6的请求会被随机转发到第二个server
除了权重随机算法之外, 还有线性轮询(默认), 公平(fair)等负载均衡算法可以配置.
调试
| 1 2 3 4 5 6 |  server {     ...     add_header Content-Type "text/plain;charset=utf-8";     return 200 "$http_host";  ...  } | 
注意其中新加入的 add_header ... utf-8和return 200 ... 
目的是让满足请求条件的页面输出一个$http_host 即请求域名
而utf-8的作用是使输出能够正确显示在页面上
如果不添加这个header则会默认显示下载保存成文件(不推荐)
Views: 59

