一、目标

centos7下nginx多个域名站点配置,Nginx初步优化  (无坑版)

二、平台

[root@xserver ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)
[root@centos764 conf.d]# nginx -V
nginx version: nginx/1.16.1
 

三、解析

1.Nginx主配置文件:/etc/nginx/nginx.conf 和conf.d/*.conf
2.Nginx Server配置文件:include /etc/nginx/default.d/*.conf
3.Nginx 虚拟主机配置文件:include /etc/nginx/conf.d/*.conf
4.关于Nginx的安装,参考另一篇帖子《Centos7笔记之nginx的安装配置

四、Nginx配置多个站点

1.前言
这有点类似windows server上的IIS多站点用主机头来共用80端口,接下来我们就防着IIS主机头模式来给Nginx绑定多个域名、多个站点。(前面已经使用yum方式安装过了Nginx-1.16.1了,下面直接配置)

2.先看一下nginx主配置文件/etc/nginx/nginx.conf中的一行内容include /etc/nginx/conf.d/*.conf,这说明还可以自定义配置文件到conf.d目录下,只要命名为.conf为后缀名即可(语法要对哈)

3.新建一个站点配置文件(一个站点配置文件配置多个域名)
当然你如果有其他域名只管往里面照葫芦画瓢的加进去就行了。
3-1. server{}代表一个站点完整区块;
3-2. listen 80;代表本站点使用80端口;
3-3. server_name hiibm.com www.hiibm.com;指的是站点的域名(相当于IIS的主机头"域名"),多个域名用空格分开,以分号结尾即可。
3-4. access_log 指的是访问日志文件的详细路径,main指的是日志格式采用nginx主配置文件/etc/nginx/nginx.conf中的http{log_format main定义的日志格式}
3-5. location /nginx_status {} 指定义nginx访问自定义的访问地址叫nginx_status,将来访问的时候就使用如http://hiibm.com/nginx_status来查看nginx的实时访问状况。
3-6. stub_status on; 它是包含在location /nginx_status里面的配置,指的是启用nginx的stub_status模块;注意:启用这个模块的话必须事先已经安装过它,可以使用命令nginx -V |grep stub_status来查是否安装了。(我使用yum安装的时候默认已经安装过这个模块了)。allow all代表谁可以访问这个url</nginx_status>,可以设定某台主机或某网段来访问,看图中注释。
3-7. location / {},代表本次的域名访问的根路径的相关设置。
3-8. root /data/web/hiibm.com;指的是本站点的web存放路径。注意web目录路径的属主要改成nginx用户
3-9. index index.html index.htm,这的是默认首页文件名,多个文件可以用空格分开。
3-10. error_page 404 /404.html 指的是开启自定义404页面,404页面的地址在网站根目录下并且文件名叫404.html,注意如果开启这个了,那你就必须去制作一个404页面,丢到指定位置。
3-11. error_page 500 503 503 504 /50x.html;这个不清楚,应该也是自定义的错误页面。
3-12. root /usr/share/nginx/html;指的是错误代码为500那一串的页面的详细地址,nginx已经默认有了/usr/share/nginx/html/50x.html

[root@centos764 ~]# vim /etc/nginx/conf.d/hiibm.com
#以下使用一个配置文件一次性添加了两个域名站点到nginx
server {
    listen       80;
    server_name  hiibm.com www.hiibm.com;

    #charset koi8-r;
    access_log  /var/log/nginx/hiibm.access.log  main;

    location /nginx_status {
        stub_status on;
        allow all;
    }

    location / {
        root   /data/web/hiibm.com;
        index  index.html index.htm;
    }

    error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

server {
    listen       80;
    server_name  a.com www.a.com;

    #charset koi8-r;
    access_log  /var/log/nginx/a.com.access.log  main;

    location / {
        root   /data/web/a.com;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 

yum nginx 多站点 nginx多站点配置_yum nginx 多站点

4.还可以再建任意多个Nginx站点配置文件,如下
啰嗦:只要配置文件名以.conf结尾,并放到/etc/nginx/conf.d/文件夹下即可。

[root@centos764 ~]# vim /etc/nginx/conf.d/b.com.conf
server {
    listen       80;
    server_name  b.com www.b.com;

    #charset koi8-r;
    access_log  /var/log/nginx/b.access.log  main;

    location / {
        root   /data/web/b.com;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

5.啰嗦:关于站点网页目录权限问题
5-1.创建站点文件夹,执行命令:mkdir -p /data/web/hiibm.com
5-2.顺手改掉这个目录的属主权限,执行命令:chown -R nginx:nginx /data
5-3.比如上面配置文件中的hiibm.com站点,指定的网页目录是/data/web/hiibm.com,那么就必须保证nginx程序有权限访问它。而使用yum方式安装的nginx会自动创建一个系统账号叫nginx,专门用来运行nginx,所以你得保证用户nginx对网页文件夹有访问权限,可以使用命令chown -R nginx:nginx /data对整个根文件夹进行授权。不建议偷懒使用chmod -R 777 /data对其授权,这比较危险。也不建议使用root身份来运行nginx。
5-4.建议对linux不熟悉的童鞋可以将防火墙和selinux给关闭掉,不然你是无法访问页面的。(不过关闭防火墙是一件非常危险的事情)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

6.别忘记重要的事情,配置完之后要重启nginx服务

systemctl restart nginx

7.测试一下页面

7-1.在啰嗦一下,因为我们是测试的域名,并没花钱买域名,所以还得做一下hosts设置。windows修改hosts文件:用记事本打开 c:\windows\system32\drivers\etc\hosts ,然后把你测试的域名写进去(截图中没写hiibm.com的解析,自行补一下。图只是参考)

yum nginx 多站点 nginx多站点配置_html_02


7-2.访问http://hiibm.com/      (纳尼?说我的无坑呢?我怎么没这个页面,自己做一个就行了echo "test" > /data/web/hiibm.com/index.html)

yum nginx 多站点 nginx多站点配置_yum nginx 多站点_03


7-3.访问nginx模块自带的状态统计页http://www.hiibm.com/nginx_status

yum nginx 多站点 nginx多站点配置_nginx_04


7-4.访问另一个站点http://b.com/

yum nginx 多站点 nginx多站点配置_配置文件_05

8.小结

1.无论是多个站点公用一个配置文件,还是一个站点一个配置文件都是可以的。只要把配置文件写在/etc/nginx/conf.d文件夹下就行,并且站点配置文件的后缀名必需叫.conf。