Nginx之静态文件服务器的搭建

1.概述

静态文件服务器是指提供HTML文件访问或客户端 可直接从中下载文件的Web服务器。对于图片、 JavaScript或CSS文件等渲染页面外观的、不会动态改 变内容的文件,大多数网站会单独提供以静态文件服 务器的方式对其进行访问,实现动静分离的架构。

HTML是一种标记语言,提供HTML文件读取是Web服 务器最基本的功能,Web服务器的配置样例如下:

复制代码
server {
    listen 8080;
    root /opt/nginx-web/www; #存放静态文件的文件目录
    location / {
        index index.html;
    }
    location /js {
        alias /opt/nginx-web/static/js/; #存放JavaScript文件的文件目录
        index index.html;
    }
}

在以上配置中,每个server指令域等同于一个虚 拟服务器,每个location指令域等同于一个虚拟目录

2.实验

按照上述配置后,我们在/opt/nginx-web/www下放置一个index.html文件

复制代码
#1.查看配置文件
[root@ansible01 nginx]# cat nginx.conf |grep -v "#"|grep -v "^$"
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       8080;
        listen       [::]:8080;
        server_name  11.0.1.18;
        root         /opt/nginx-web/www;
        include /etc/nginx/default.d/*.conf;
        location / {
            index  index.html index.htm;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}
#2.查看index.html文件
[root@ansible01 nginx]# cat /opt/nginx-web/www/index.html 
hello world
#3.重载nginx配置文件
[root@ansible01 nginx]# nginx -s reload
#4.关闭防火墙
[root@ansible01 nginx]# systemctl stop firewalld
#5.关闭selinux
[root@ansible01 nginx]# setenforce 0
[root@ansible01 nginx]# getenforce 
Permissive

直接在windows用浏览器访问:11.0.1.18:8080

2.1 基于域名的虚拟主机

2.1.1 nginx配置

复制代码
[root@ansible01 nginx]# cat nginx.conf |grep -v "#"|grep -v "^$"
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        listen       [::]:80;
        server_name  www.a.com;
        root         /opt/nginx-web/www/a/;
        include /etc/nginx/default.d/*.conf;
        location / {
            index  index.html index.htm;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
    server {
        listen       80;
        listen       [::]:80;
        server_name  www.b.com;
        root         /opt/nginx-web/www/b/;
        include /etc/nginx/default.d/*.conf;
        location / {
            index  index.html index.htm;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}

2.1.2 准备静态文件

复制代码
[root@ansible01 nginx]# cat /opt/nginx-web/www/a/index.html 
hello,this is www.a.com
[root@ansible01 nginx]# cat /opt/nginx-web/www/b/index.html 
hello,this is www.b.com

2.1.3 重启服务,增加ip域名映射

复制代码
[root@ansible01 nginx]# nginx -s reload
[root@ansible01 nginx]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
11.0.1.18 www.a.com
11.0.1.18 www.b.com

2.1.4 测试

复制代码
[root@ansible01 nginx]# curl www.a.com
hello,this is www.a.com
[root@ansible01 nginx]# curl www.b.com
hello,this is www.b.com

2.2 基于端口的虚拟主机

2.2.1 nginx配置

复制代码
[root@ansible01 nginx]# cat nginx.conf |grep -v "#"|grep -v "^$"
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        listen       [::]:80;
        server_name  www.test.com;
        root         /opt/nginx-web/www/a/;
        include /etc/nginx/default.d/*.conf;
        location / {
            index  index.html index.htm;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
    server {
        listen       81;
        listen       [::]:81;
        server_name  www.test.com;
        root         /opt/nginx-web/www/b/;
        include /etc/nginx/default.d/*.conf;
        location / {
            index  index.html index.htm;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}

2.2.2 重启服务,增加IP域名映射

复制代码
[root@ansible01 nginx]# nginx -s reload
[root@ansible01 nginx]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
11.0.1.18 www.a.com
11.0.1.18 www.b.com
11.0.1.18 www.test.com

2.2.3 测试

复制代码
[root@ansible01 nginx]# curl www.test.com:80
hello,this is www.a.com
[root@ansible01 nginx]# curl www.test.com:81
hello,this is www.b.com

2.3 基于IP的虚拟主机

2.3.1 nginx配置

复制代码
[root@ansible01 nginx]# cat nginx.conf |grep -v "#"|grep -v "^$"
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    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;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       11.0.1.18:80;
        server_name  www.test.com;
        root         /opt/nginx-web/www/a/;
        include /etc/nginx/default.d/*.conf;
        location / {
            index  index.html index.htm;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
    server {
        listen       11.0.1.19:80;
        server_name  www.test.com;
        root         /opt/nginx-web/www/b/;
        include /etc/nginx/default.d/*.conf;
        location / {
            index  index.html index.htm;
        }
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}

2.3.2 重启服务

复制代码
[root@ansible01 nginx]# nginx -s reload

2.3.3 测试

复制代码
[root@ansible01 nginx]# curl 11.0.1.18
hello,this is www.a.com
[root@ansible01 nginx]# curl 11.0.1.19
hello,this is www.b.com
相关推荐
m0_488777651 小时前
Nginx虚拟主机
nginx·nginx虚拟主机
wanhengidc1 小时前
深度了解云手机是什么
运维·服务器·科技·智能手机·云计算
python百炼成钢1 小时前
28.嵌入式 Linux LED 驱动开发实验
linux·运维·驱动开发
JJ1M83 小时前
用 Python 快速搭建一个支持 HTTPS、CORS 和断点续传的文件服务器
服务器·python·https
_Stellar3 小时前
Linux 服务器管理 根目录文件夹权限设置 基于用户组实现安全共享
linux·服务器·安全
LUCIFER4 小时前
驱动开发:详细分析 DTB、DTS、DTSI、DTBO 的区别、用途及它们之间的关系
linux·服务器·驱动开发
BullSmall5 小时前
Test Matrix:测试矩阵(IT 领域定义 + 设计实践 + 华为场景应用)
运维·服务器
liuyao_xianhui5 小时前
版本控制器git--gdb/cgdb
linux·运维·服务器·git
CS_浮鱼5 小时前
【Linux进阶】mmap实战:文件映射、进程通信与LRU缓存
linux·运维·c++·缓存
chuxinweihui6 小时前
应用层协议 HTTP
linux·服务器·网络·网络协议·http