Nginx 安装和基本操作
安装
yum install nginx
启动
servic nginx start
停止
service nginx stop
重载
servic nginx reload
安装
安装前可以查询是否已经安装过
sudo yum search nginx
如果需要安装,为了更快安装, 需要将镜像的源添加进来
$ 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的欢迎页面
配置
查看配置文件
[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 的文件存在 如下
[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
$ 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;
}
}
保存, 访问页面:

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

按F12打开调试信息:

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

保存并重载nginx服务

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

修改hosts文件

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

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

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

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

main是日志格式的命名空间, 也就是可以允许定义多个格式
当前格式下的日志信息如下:
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个不同主机上
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)等负载均衡算法可以配置.
调试
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
