[Nginx]使用Nginx搭建一个静态网页服务器

2023-04-05  本文已影响0人  AbstractCulture

准备工作

首先我们需要一个index页面,这里我简单一点,直接用baidu的首页进行演示.
直接进入百度,在浏览器按下ctrl+s即可保存网页,然后放到对应的文件夹,我放置的位置是:

D:/docker/nginx/html/index.html  

配置nginx.conf文件

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            alias   /usr/share/nginx/html/;
            index  index.html index.htm;
            charset utf-8;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }


}

alias和root的区别

这里要注意aliasroot的区别,root会将uri作为资源访问路径到进行查找.
举例说明:

location /css/ {
    root   /usr/share/nginx/html/;
    index  index.html index.htm;
    charset utf-8;
}

uri/css/xxx.css时,服务器会返回/usr/share/nginx/html/css/xxx.css.
如果配置换成alias:

location /css/ {
    alias   /usr/share/nginx/html/;
    index  index.html index.htm;
    charset utf-8;
}

访问/css/xxx.css时,服务器返回: /usr/share/nginx/html/xxx.css

使用alias时,目录名一定要加上/符号
alias只能位于location中.

使用gzip对资源进行静态压缩

我们在web传输过程中,可以对静态资源进行压缩处理减少传输的字节数,来优化页面响应的速度.

# 打开gzip
gzip on;  
# 当传输的字节小于gzip_min_length时,不再进行压缩  
gzip_min_length 1;
# 压缩级别
gzip_comp_level 2;
# 对某些类型的文件才进行压缩
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/git image/png;

从响应头的Content-Encoding:gzip可以看到字节被进行压缩了.

使用autoindex来展示文件树

对你想要渲染的文件夹配置一下autoindex即可. 注意,需要以/结尾

location / {
    alias /usr/share/nginx/
    autoindex on;
}

使用set指令限制静态资源的响应速度

location / {
    alias /usr/share/nginx/
    autoindex on;
    # 限制每秒响应的速度
    set $limit_rate 100k;
}

使用log_format进行日志格式定义

log_format main '$remote_addr - $remote_user [$time_local] "$request"'
                '$status $body_bytes_send "$http_referer"'
                '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
上一篇下一篇

猜你喜欢

热点阅读