Ubuntu19.X 版本nginx 配置及使用方法

工作需求:客户端通过nginx 代理访问另外一台文件服务器上的内容。

文章分为两个章节,一个章节为安装Nginx ,一个章节为配置使用Nginx。

一、Nginx安装

官方下载页面:http://nginx.org/en/download.html

configure配置文件详解:http://nginx.org/en/docs/configure.html

安装gcc g++的依赖库

Nginx是C语言开发,安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境

sudo apt-get install build-essential
sudo apt-get install libtool
centos的话:yum install gcc-c++ 

安装pcre依赖库(http://www.pcre.org/

是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库

sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
centos的话:yum install -y pcre pcre-devel

安装zlib依赖库(http://www.zlib.net

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库

sudo apt-get install zlib1g-dev
centos的话:yum install -y zlib zlib-devel

安装SSL依赖库(16.04默认已经安装了)

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

sudo apt-get install openssl
centos的话:yum install -y openssl openssl-devel

安装Nginx

 

#下载最新版本:
wget http://nginx.org/download/nginx-1.13.6.tar.gz
#解压:
tar -zxvf nginx-1.13.6.tar.gz
#进入解压目录:
cd nginx-1.13.6
#配置:
./configure --prefix=/usr/local/nginx 
#编译:
make
#安装:
sudo make install
#启动:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
#查看进程:
ps -ef | grep nginx

 

170217、nginx 安装时候报错:make: *** No rule to make target `build', needed by `default'. Stop.出现此种情况,是linux系统没有安装先决条件

1、GCC——GNU编译器集合(GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管理器有不同的实现:yum是基于Red Hat的发布版本;apt用于Debian和Ubuntu;yast用于SuSE Linux等等。)

RedHat中安装GCC:

yum install gcc

Ubuntu中安装GCC:

apt-get install gcc

2、PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码,这正是我们需要的理由。)

RedHat中安装PCRE

yum install pcre pcre-devel

Ubuntu中安装PCRE

apt-get install libpcre3 libpcre3-dev

3、zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)

RedHat中安装zlib

yum install zlib zlib-devel

Ubuntu中安装zlib

apt-get install zlib1g zlib1g-dev

4、OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)

RedHat中安装OpenSSL

yum install openssl openssl-devel

Ubuntu中安装OpenSSL:(注:Ubuntu14.04的仓库中没有发现openssl-dev):

apt-get install openssl openssl-dev

关于configure、make、make install

 

源码的安装一般由有这三个步骤:配置(configure)、编译(make)、安装(make install)

其中–prefix选项就是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较分散。

为了便于集中管理某个软件的各种文件,可以配置–prefix,如:
./configure –prefix=/usr/local
可以把所有资源文件放在/usr/local的路径中,就不会分散了。

二、配置使用Nginx

Nginx启动: /usr/local/nginx/sbin/nginx 

Nginx重启:/usr/local/nginx/sbin/nginx -s reload

Nginx关闭: 根据端口查找相应的pid,直接kill,netstat -nlp | grep 端口号

Nginx 配置文件:/usr/local/nginx/conf/nginx.conf

1.配置路径

设置访问路径:

路径结构为:

/home/toolrd/Desktop/storage/ 路径下有index.html  内容为hello this is my new computer

/home/toolrd/Desktop/sotrage/images 目录下有t1.jpg  t2.jpg t3.jpg

2.打开vim /usr/local/nginx/conf/nginx.conf  配置

 

    #打开文件访问功能
    sendfile on ;
    #打开目录访问功能
    autoindex on;
    #可读性显示文件大小 KB MB  GB
    autoindex_exact_size off;
    #文件时间
    autoindex_localtime on;

    server {
        listen       80;
        server_name localhost;#可以不配置,使用本地ip访问

        location / {
            root   /home/toolrd/storage/;
            index  index.html index.htm;
        }

        location /images {
            alias  /home.toolrd/storage/images;
            index  index.html index.htm;
        }
    }

默认访问路径
root: 文件所在路径
index: 首页,根据实际情况更改

使用root会将location后的two追加在路径的尾部,在访问时就会访问到/root/wwwroot/two/two路径下去
将root改成alias则不会将two追加在路径尾部,访问时就为正确路径/root/wwwroot/two

3.对更改后的nginx,重启配置

/usr/local/nginx/sbin/ngxin/ -s reload

三、实现两台物理机的挂载,并通过客户端通过代理访问远程客户端上的内容。

以上只是测试了通过nginx访问本机的可行性,需求要求是客户端通过nginx代理访问远程机器目录下的文件。

采用的策略是,将远程机器目录挂在到本地,通过对nginx.conf配置,实现客户端通过nginx代理访问远程主机目录下的文件。

1.安装nfs(服务器和客户端都需要安装) 
1.1 使用apt工具下载并安装nfs-kernel-server

sudo apt install nfs-kernel-server

1.2. 对服务器配置共享参数(/etc/exports)

1.2.1建立共享目录

/home/MDATA/

/home/MDATA 下存有共享文件 t1.jpg ,t2.jpg

执行命令:

sudo vim /etc/exports

在最后新增一行:

/home/MDATA *(insecure,rw,sync,no_root_squash,anonuid=123,anongid=123)

如果insecure选项不添加的话会在后面的mount中报错(mount.nfs: access denied by server while mounting)

参数解析:

rw:可读写的权限;
ro:只读的权限;
no_root_squash:登入到NFS主机的用户如果是ROOT用户,他就拥有ROOT的权限,此参数很不安全,建议不要使用。

sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
insecure 允许从这台机器过来的非授权访问。

anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。

anongid:同anonuid

1.2.2启动nfs: sudo service nfs start

如果nfs启动不了,

sudo /etc/init.d/nfs-kernel-server restart

2.对客户机(配置有nginx的物理机)

2.1 建立接受挂载文件的目录

/home/nfsdata

2.2执行挂载命令

mount -t nfs -o nolock,tcp,vers=4 192.168.2.112:/home/MDATA /home/nfsdata/

如果挂载成功的话,在客户机/home/nfsdata/ 目录下会包含文件服务器/home/MDATA 路径下的内容。

挂载参数解析:

nolock -- 禁用文件锁。这个设置在连接到一个旧版本的NFS服务器时偶尔会用到。  
noexec -- 防止执行被挂接的系统上的二进制文件。这在系统通过NFS挂接一个包含有不兼容的二进制文件的非linux系统时是很有用的。  
nosuid -- 禁用"设置用户标志位"(set-user-identifier)或者"设置组标志位"(set-group-identifier)。这样防止远程用户运行setuid程序获得更高权限。  
rsize=8192和wsize=8192 -- 通过设定大的同时传输的数据块大小(bytes),以提高NFS读写的速度。改变这些值时要当心,一些旧的linux内核和网卡在大的块大小不能正常工作。  
tcp -- 指定NFS使用TCP协议mount,替换UDP

rw 以读写方式安装文件系统(也必须要以相同的方式来导出)
ro 以只读方式安装文件系统
bg 如果安装失败(服务器没有响应),在后台一直尝试,继续发其它的安装请求
hard 以硬方式安装文件系统(这是默认情况)。如果服务器当机,让试图访问它的操作被阻塞,直到服务器恢复为止。
soft 以软方式安装文件系统。如果服务器当机,让试图访问它的操作失败,返回一条出错消息。这项功能对于避免进程“挂”在无关紧要的安装操作上来说非常有用。
intr 允许用户中断被阻塞的操作(并且让它们返回一条出错消息)
nointr 不允许用户中断
retrans=n 指定在以软方式安装的文件系统上,在返回一条出错消息之前重复发出请求的次数。
timeo=n 设置请求的超时时间(以十分之一秒为单位)
rsize=n 设置读缓冲的大小为n字节。对TCP和UDP安装都适用,但最优值不一样(32K较好)。
wsize=n 设置写缓冲的大小为n字节。对TCP和UDP安装都适。
nfsvers=n 设置NFS协议的版本 2 或者 3 (在正常情况下是自动的)
tcp 选择通过TCP来传输。默认选择UDP
fg 和bg正好相反,是默认的参数

四、Nginx 设置缓存

题外篇:

1.如何未Ubuntu本机指定域名,方法如下:

1)sudo vim /etc/hosts

2) 添加 127.0.0.1 www.xxxx.com

3) 重启network :

 sudo /etc/init.d/networking restart

通过浏览器访问设定好的域名即可,访问本机。

为了模拟通过Nginx缓存访问文件服务器的方法可行性:
 

1.主机A文件服务器+nginx 

 

具体的:

主机A中配置nginx开启文件访问功能,

路径下root@toolrd:/usr/local/nginx/files/xiaoxiao# ls
            t1.jpg  t1.txt

其次配置nginx.config:

http配置如下
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    autoindex on;
    #可读性显示文件大小 KB MB  GB
    autoindex_exact_size off;
    #文件时间
    autoindex_localtime on;
    gzip  on;
    proxy_cache_path /usr/local/nginx/cache/zhu levels=1:2 keys_zone=ZHU:200m inactive=1d max_size=30g use_temp_path=off;

    server {
        listen       10080;
        server_name  localhost;
        root /usr/local/nginx/files;
        client_max_body_size 4096m;


        location /xiaoxiao/ {
            root /usr/local/nginx/files/;
            index  index.html index.htm;
       }
        #location /zhu/ {
        #proxy_cache ZHU;
        #proxy_cache_valid 304 301 302 30s;
        #proxy_cache_valid 200 401 403 405 406 410 30m;
        #proxy_cache_key $uri;
        # proxy_cache_valid any 1s;
        #proxy_set_header Host $host:$server_port;
        # proxy_set_header X-Real-IP $remote_addr;
        # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # proxy_pass http://192.168.2.112:10080/zhu/;
        # 

      }

2 主机B+nginx

路径下:

     root@xiaoxiao:/usr/local/nginx/files# ls
             dir2  xiaoxiao  zhu

Nginx  配置nginx.config如下:

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

    #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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    proxy_cache_path /usr/local/nginx/cache/xiaoxiao levels=1:2 keys_zone=XIAOXIAO:200m inactive=1d max_size=30g use_temp_path=off;

    #gzip  on;

    server {
        listen       10080;
        server_name  www.abc.com;
        root /usr/local/nginx/files;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #开启文件读取
        sendfile on;

        #打来目录浏览功能
        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;

        location / {
            root   /usr/local/nginx/files;
            index  index.html index.htm;
        }

       # location /zhu/ {
       #     root /usr/local/nginx/files/;
       #     index  index.html index.htm;

     

    location /xiaoxiao/ {
        proxy_cache XIAOXIAO;
        proxy_cache_valid 304 301 302 30s;
        proxy_cache_valid 401 403 405 406 410 30m;
        proxy_cache_key $uri;
        proxy_cache_valid any 1s;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.2.78:10080/xiaoxiao/;
        }

 

       }

}

 

3.测试

(1)通过主机B的ip 和端口访问/xiaoxiao/路径下的文件,查看/usr/local/nginx/cache/xiaoxiao路径下是否生成缓存

http://192.168.2.112:10080/xiaoxiao/

发现能够正常访问文件服务器A中的toolrd:/usr/local/nginx/files/xiaoxiao 中的文件。

(2)查看B主机下的cache路径下的xiaoxiao文件夹下也已经生成了缓存文件。

root@xiaoxiao:/usr/local/nginx/cache/xiaoxiao# ls
2  8  temp

 

五、上传服务 (UBUNTU)

1.准备工作,由于http_dav_module需要C库libxml2  libxslt 在配置Nginx库后需要额外的增加以上两个C库

sudo apt-get install libxml2-dev

sudo apt-get install libxslt-dev

 

解决nginx+ http_dav_moule configure错误:

./configure --prefix=/usr/local/nginx6  --with-http_dav_module   --add-module=../nginx-dav-ext-module

configure: error1:
解决:
sudo apt-get install libxml2-dev

configure error2:

sudo apt-get install libxslt-dev

2.下载 http_dav_module 模块

git clone https://github.com/arut/nginx-dav-ext-module.git

3.下载Nginx模块并安装带有http_dav_module模块的Nginx

wget http://nginx.org/download/nginx-1.13.6.tar.gz
#解压:
tar -zxvf nginx-1.13.6.tar.gz
#进入解压目录:
cd nginx-1.13.6
#配置:
./configure --prefix=/usr/local/nginx  --with-http_dav_module   --add-module=[nginx-dav-ext-module的路径]
#编译:
make
#安装:
sudo make install
#启动:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
#查看进程:
ps -ef | grep nginx

 

4.配置:/usr/local/conf/nginx.conf 

Server字段下配置如下:

  listen       8080;
        location /upload {
        root    /usr/local/nginx6/files/; #存储路径
        autoindex on;
        dav_methods PUT DELETE MKCOL COPY MOVE;#支持上传操作
        dav_ext_methods PROPFIND OPTIONS;
        create_full_put_path  on;
        dav_access user:rw group:r all:r;
        client_max_body_size 50M;# 存储文件大小


        #auth_basic "Authorized Users Only";
        #auth_basic_user_file /var/www/soft/.htpasswd;
        }

5 启动,测试

curl -T   File     网址

 

 

 

 

参考:

https://www.cnblogs.com/dongye95/p/11196118.html

https://blog.csdn.net/JIAngRui_/article/details/86690854

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值