CentOS7系统配置nginx服务器

导语:作为一个以服务器为主要市场的操作系统,主要就是对客户端的请求进行响应,进行处理的。在经历过系统镜像安装和本地配置好ssh功能后,接下来进行服务器的安装,这里我以nginx为主,介绍一下如何安装nginx和配置站点,

# 安装要求

  • linux centos7系统
  • ssh软件

# nginx简介

nginx官网 (opens new window)

nginx作者是伊戈尔·赛索耶夫,最初是为一个俄罗斯访问量第二大的网站开发的服务器。

nginx主要是有以下几个功能:

  • 免费开源的服务器
  • 轻量级的服务器,安装包只有几百KB
  • 高性能的web服务器
  • 反向代理服务器
  • 负载均衡
  • 电子邮件代理服务器

nginx国内大陆的网站用户有腾讯、百度、淘宝、网易、京东和新浪等。

# nginx安装

# 编译安装

# 下载安装

wget http://nginx.org/download/nginx-1.16.1.tar.gz
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
tar -zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure --prefix=/usr/local/nginx
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
1
2
3
4
5
6
7

# 操作

# start
nginx
# stop
nginx -s quit
nginx -s stop
# look process
nginx -s quit
1
2
3
4
5
6
7

# 配置服务

vi /etc/systemd/system/nginx.service

[Unit]
Description=nginx
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=oneshot
ExecStart=/usr/local/nginx/sbin/nginx
ExecStop=/usr/local/nginx/sbin/nginx -s stop 
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13

# 启动命令

  • 启动 systemctl start nginx
  • 停止 systemctl stop nginx
  • 状态 systemctl status nginx
  • 打开开机自启 systemctl enable nginx
  • 关闭开机自启 systemctl disable nginx

# 安装包安装

  • 添加安装包
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
1
  • 安装软件包
yum install -y nginx
1

# nginx程序启动

你可以执行nginx -v查看版本。

系统启动并且设置为开机自启动。

systemctl start nginx
systemctl enable nginx
1
2

由于nginx默认是80端口,所以你需要开放80端口。

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
1
2

# 增加hosts记录

打开系统hosts文件,这里就以www.example.com为例。

如果你不清楚自己的系统ip是多少,可以运行下面这个命令安装服务包。

yum install -y net-tools
ifconfig
1
2

就会看到自己的ip地址了。

  • 首先我们进入hosts文件,vi /etc/hosts

  • 然后按一下键盘上的Insert, 输入内容 127.0.0.1 www.example.com;

  • 最后按住键盘上的Esc,输入:wq或者:x保存并且退出。

到游览器地址栏输入刚刚保存的网址,就可以看到一下内容。

nginx

# 配置一个站点

nginx的全局配置文件vi /etc/nginx/nginx.conf

接下来我会配置一个简单的静态站点作为示例。

  • 创建一个文件夹用来存放站点文件。
mkdir /var/www/sites
1
  • 新建一个网页
vi /var/www/sites/index.html
1
  • 然后依照上面的文件编辑保存步骤输入内容并且保存。

这是我的网站首页内容。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>示例站点</title>
  </head>
  <body>
     <h2>Hello,World!</h2>
     <p>Welcome to visted my web site!</p>
  </body>
</html>
1
2
3
4
5
6
7
8
9
10
11
  • 添加配置文件夹和文件

进入nginx的目录下,创建一个文件夹和文件。

进入nginx.conf文件,在http属性下面加一个include /etc/nginx/vhost/*.conf;

mkdir /etc/nginx/vhost
vi /etc/nginx/vhost/example.com.conf
1
2

输入以下内容并且保存。

server {
  listen        80; # 监听的端口,这里是80端口
  server_name   www.example.com example.com; # 这里是地址栏要访问的域名,可以写多个
  access_log /var/www/sites/access.log; # 访问成功日志文件
  error_log /var/www/sites/error.log; # 访问错误日志文件
  location / {
    root /var/www/sites; # 站点目录
    index index.html index.htm; # 站点首页文件名称
  }
  error_page   500 502 503 504  /50x.html; #错误页面
  location = /50x.html {
      root   /usr/share/nginx/html;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • 配置完了以后重载重启nginx。
systemctl reload nginx
systemctl restart nginx
1
2

【技巧】这里有一个小技巧,可以检测你写的nginx配置站点文件语法是否正确,可以帮助你减少不必要的烦恼。

# 检查全部配置文件
nginx -t
# 检查单个配置文件
nginx -t -c /etc/nginx/nginx.conf
1
2
3
4

如果结果没有报错,说明是你写的语法没有问题,反之则要根据错误提示,找到对应的配置文件,更改内容。 在本地hosts文件增加解析记录,这里的ip就是你远程服务器的ip地址了。

192.168.1.123 www.example.com
192.168.1.123 example.com
1
2
  • 预览

打开游览器,输入www.example.com或者example.com就可以看到之前编辑的站点首页内容了。

# 优化技巧

# 隐藏版本号

http,server,location都可以加

vi /etc/nginx/ngninx.conf

server_tokens off;
1

# 配置多个域名

server {
    listen 80;
    server_name app.dev a.dev b.dev;
}
1
2
3
4

# 配置多个站点

server {
    listen 80;
    server_name a.app.dev;
    location / {
      root /usr/local/app;
      index index.html index.htm;
    }
}

server {
    listen 80;
    server_name b.app.dev;
    location / {
      root /usr/local/b;
      index index.html index.htm;
    }
}

server {
    listen 80;
    server_name c.app.dev;
    location / {
      root /usr/local/c;
      index index.html index.htm;
    }
}
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

# 禁用ip访问

server {
    listen       80 default;
    server_name  _;
    return  404;
}
1
2
3
4
5

或者

server {
    listen 80 default;
    server_name  _;
    rewrite ^/(.*)$ https://blog.dev/$1 permanent;
}
1
2
3
4
5

# 返回验证文件

location = /deijdw12919msjd.txt {
    default_type text/plain;
    return 200 'abd12535355abde35352';
}
1
2
3
4

# 配置反向代理

upstream testSite {
  server 192.168.0.1 weight=1;
  server 192.168.0.2 weight=1;
}

server {
    location /blog/ { 
        proxy_pass http://testSite; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 开启keepalive

upstream tomcat {
    server a.dev:8080;
    keepalive 1024;
}
1
2
3
4

# 自动跳转

location / {
    error_page 404 =  @404page;
}

location @404page {
    rewrite  .*  / permanent;
}
1
2
3
4
5
6
7

# 写在最后

今天只是初步探究nginx的用法,其他的功能下次补充完善。

分享至:

  • qq
  • qq空间
  • 微博
  • 豆瓣
  • 贴吧