nginx服务器的基本安装和配置方法

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

clipboard.png

和重启restart不同(杀死进程并重新启动), reload 在运行状态下就可以进行服务的重载

运维常用!!! 不会杀死进程就可以更新配置

查看服务状态

clipboard.png

查看Nginx的欢迎页面

clipboard.png

配置

查看配置文件

 [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让引导页变得不一样

clipboard.png

拓展

虚拟主机

复制一份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;
  }
}

保存, 访问页面:

clipboard.png

页面并没有发生变化, 这是因为修改配置后需要重启或者重载服务

$ sudo service nginx reload

然后访问 首页就是/data/www/index.html的内容了

clipboard.png

按F12打开调试信息:

clipboard.png

这个服务器版本明文显示出来是有安全风险的

如果黑客知道某个版本的容器有漏洞那么就会增加他攻击你的概率

可以通过配置屏蔽掉

多端口

多端口也很容易配置

clipboard.png

保存并重载nginx服务

clipboard.png

多域名

配置多域名也很容易

clipboard.png

修改hosts文件

clipboard.png

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

clipboard.png

伪静态

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

clipboard.png

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

clipboard.png

日志格式

nginx 的自定义 日志格式

clipboard.png

main是日志格式的命名空间, 也就是可以允许定义多个格式

当前格式下的日志信息如下:

sudo tail -f /var/log/nginx/access.log

clipboard.png

tailftail-ftail-F三者区别

  • taill -f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

  • tall -F 等同于-follow=name--retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

  • tailf 等同于tail -f -n10(貌似tail-f域-F默认也是打印最后10行,然后追踪文件),与tail-f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电

自定义日志格式也很简单, 修改nginx.conf文件 增加niit的命令空间

clipboard.png

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

clipboard.png

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

clipboard.png

浏览网页后日志变成

clipboard.png

还有error_log 主要是记录报错信息的

也是一样可以配置的

clipboard.png

反向代理和负载均衡

反向代理

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

image-20240317235041317

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

clipboard.png

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

clipboard.png

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

clipboard.png

F12查看网路

clipboard.png

负载均衡

当一台服务器无法承受请求量, 可以配置多台服务器

负载均衡就是在配置中配置多个主机, 假设我的博客已经部署到了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-8return 200 ...

目的是让满足请求条件的页面输出一个$http_host 即请求域名

而utf-8的作用是使输出能够正确显示在页面上

如果不添加这个header则会默认显示下载保存成文件(不推荐)

Views: 59

Index