Nginx笔记


Nginx

Nginx安装
#安装wget,用于下载网络资源
yum -y install wget
#下载nginx安装包,可直接访问url下载
wget -O nginx12.0.1.tar.gz https://nginx.org/download/nginx-1.20.1.tar.gz
#解压nginx安装包
tar zxvf nginx12.0.1.tar.gz
#安装nginx依赖包
yum -y install gcc pcre-devel zlib-devel openssl-devel
#进入nginx目录
cd nginx-1.20.1/
#编译nginx
./configure --prefix=/usr/local/nginx
#如果找不到make命令,先安装make命令,再编译
yum -y install gcc automake autoconf libtool make
make && make install
#查看nginx安装路径
whereis nginx
#创建软连接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
#启动nginx
nginx
#访问nginx默认80端口
curl localhost:80
Nginx原生文件浏览配置

/usr/local/nginx/conf/nginx.conf

#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址

error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg

pid        logs/nginx.pid;

events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}

http{
    include       mime.types;   #文件扩展名与文件类型映射表
    #default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #access_log off; #取消服务日志
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。
server {
    listen       8000;
    charset 'utf-8';
    override_charset on;
    #跨域
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET,POST';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    server_name localhost;

		#默认下载
        location /dl {
         if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)$){
                add_header Content-Disposition: 'attachment';
                add_header  Content-Type application/octet-stream;
         }
         alias /;
         #Nginx日志目录
         autoindex on;
         #打开目录浏览功能
         autoindex_exact_size off;
         #默认为on,显示出文件的确切大小,单位是bytes
         #显示出文件的大概大小,单位是kB或者MB或者GB
         autoindex_localtime on;
         #默认为off,显示的文件时间为GMT时间。
         #改为on后,显示的文件时间为文件的服务器时间
         add_header Cache-Control no-store;
         #让浏览器不保存临时文件
         break;
        }

		#默认预览
        location / {
         #fancyindex on;              # Enable fancy indexes.
         #fancyindex_exact_size off;  # Output human-readable file sizes.
         alias /;
         #Nginx日志目录
         autoindex on;
         #打开目录浏览功能
         autoindex_exact_size off;
         #默认为on,显示出文件的确切大小,单位是bytes
         #显示出文件的大概大小,单位是kB或者MB或者GB
         autoindex_localtime on;
         #默认为off,显示的文件时间为GMT时间。
         #改为on后,显示的文件时间为文件的服务器时间
         add_header Cache-Control no-store;
         #让浏览器不保存临时文件

         #声明变量flag
         set $flag 0;

         if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)$){
              set $flag 1;
          }

          #如果带有view说明是预览
          if ($request_uri ~* view$){
              set $flag 2;
          }
          if ($flag = 1){
              add_header Content-Disposition: attachment;
          }
          index  index.html index.htm;
        }

}}
Nginx使用pdf.js浏览pdf、图片

http://mozilla.github.io/pdf.js/

wget -O pdfjs-2.8.335-dist.zip https://github.com/mozilla/pdf.js/releases/download/v2.8.335/pdfjs-2.8.335-dist.zip
yum -y install unzip
unzip pdfjs-2.8.335-dist.zip
mkdir pdfjs
unzip -d ./pdfjs pdfjs-2.8.335-dist.zip
cp -rf pdfjs/web /usr/local/html/
nginx+fancyindex漂亮目录浏览带搜索功能

https://perso.crans.org/besson/publis/Nginx-Fancyindex-Theme/

#下载资源
wget -O fancyindex.zip https://github.com/aperezdc/ngx-fancyindex/archive/v0.5.1.zip
#下载样式
wget -O fancytheme.zip https://github.com/Naereen/Nginx-Fancyindex-Theme/archive/refs/heads/master.zip
#解压
unzip fancyindex.zip
unzip fancytheme.zip
#复制配置到nginx中
cp Nginx-Fancyindex-Theme-master/fancyindex.conf nginx-1.20.1/conf/
#编译nginx
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx --add-module=../ngx-fancyindex-0.5.1
make && make install
#复制配置
cp Nginx-Fancyindex-Theme-master/fancyindex.conf /usr/local/nginx/conf
#复制资源文件
cp -rf Nginx-Fancyindex-Theme-master/Nginx-Fancyindex-Theme-light/ /usr/local/nginx/html/

vi /usr/local/nginx/conf/nginx.conf

http{
	#启动Fancyindex模块
    fancyindex off;
    fancyindex_exact_size off;
    fancyindex_localtime on;
    fancyindex_header "/Nginx-Fancyindex-Theme-light/header.html"; #主题头部文件
    fancyindex_footer "/Nginx-Fancyindex-Theme-light/footer.html"; #主题尾部文件
    fancyindex_ignore "examplefile.html";
    fancyindex_ignore "Nginx-Fancyindex-Theme-light"; #隐藏目录
    fancyindex_name_length 255;
    
    location / {
          root html;
          include fancyindex.conf;
          #index  index.html index.htm;
        }    
    }

启动nginx或nginx -s reload