nginx搭建文件服务器 docker 搭建文件服务器
大家好,感谢邀请,今天来为大家分享一下nginx搭建文件服务器的问题,以及和docker 搭建文件服务器的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
一、服务器从零到一——Ubuntu搭建nginx静态服务器
Ubuntu 18.04上的Nginx默认启用了一个服务器模块,该模块被配置为在/var/www/html目录下提供文档。虽然这适用于单个站点,但如果您托管多个站点,它可能会变得很笨重。我们不必修改/var/www/html,而是在/var/www为我们的 example.com网站创建一个目录结构,并将/var/www/html保留为默认目录,如果客户端请求没有匹配任何其他网站。
按如下所示为example.com创建目录,使用-p标志创建任何必需的父目录:
$ sudo mkdir-p/var/www/ example.com/html
接下来,使用$USER环境变量分配目录的所有权:
USER:$USER/var/www/ example.com/html/
如果你没有修改你的umask值,你的web根目录的权限应该是正确的,但是你可以通过输入:
$ sudo chmod-R 755/var/www/ example.com/
接下来,使用gedit或您最喜欢的编辑器创建一个index.html页面示例:
$ gedit/var/www/ example.com/html/index.html
在里面,添加下面的示例HTML:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
为了让Nginx提供这些内容,有必要创建一个具有正确指令的服务器块。我们不要直接修改默认配置文件,而是在/etc/nginx/sites-available/ example.com上创建一个新文件:
$ sudo gedit/etc/nginx/sites-available/example.com
粘贴到以下配置块中,该块类似于默认值,但已更新为我们的新目录和域名:
server{
listen 80;
listen [::]:80;
}
请注意,我们已将root配置更新到我们的新目录,并将server_name为我们的域名。
接下来,让我们通过创建一个链接到启动sites-enabled目录来启用该文件,该目录是Nginx在启动过程中读取的:
$ sudo ln-s/etc/nginx/sites-available/example.com/etc/nginx/sites-enabled/
现在启用两个服务器模块并将其配置为基于listen和server_name指令响应请求(您可以阅读关于Nginx如何处理这些指令的更多信息):
example.com:将响应 example.com和 www.example.com请求。
default:将响应端口80上与其他两个块不匹配的任何请求。
为了避免添加额外的服务器名称可能导致的哈希桶内存问题,有必要调整/etc/nginx/nginx.conf文件中的单个值。
打开文件:sudo gedit/etc/nginx/nginx.conf
找到server_names_hash_bucket_size指令并删除#符号以取消注释该行:
...
http{
...
server_names_hash_bucket_size 64;
...
}
...
接下来,测试以确保您的Nginx文件中没有语法错误:
$ sudo nginx-t
nginx: the configuration file/etc/nginx/nginx.conf syntax is ok
nginx: configuration file/etc/nginx/nginx.conf test is successful
如果没有任何问题,请重新启动Nginx以启用您的更改:
$ sudo systemctl restart nginx
熟悉重要的Nginx文件和目录
nginx服务器配置文件:
/etc/nginx:Nginx配置目录。所有的Nginx配置文件都驻留在这里。
/etc/nginx/nginx.conf:主要的Nginx配置文件。这可以修改,以更改Nginx全局配置。
/etc/nginx/sites-available/:可存储每个站点服务器块的目录。除非将Nginx链接到sites-enabled了sites-enabled目录,否则Nginx不会使用此目录中的配置文件。通常,所有服务器块配置都在此目录中完成,然后通过链接到其他目录启用。
/etc/nginx/sites-enabled/:存储启用的每个站点服务器块的目录。通常,这些是通过链接到sites-available目录中的配置文件创建的。
/etc/nginx/snippets:这个目录包含可以包含在Nginx配置其他地方的配置片段。可重复配置的片段可以重构为片段。
nginx服务器日志文件:
/var/log/nginx/access.log:除非Nginx配置为其他方式,否则每个对您的Web服务器的请求都会记录在此日志文件中。
/var/log/nginx/error.log:任何Nginx错误都会记录在这个日志中。
docker 搭建文件服务器
version:'3'//docker-compose版本 3.x
services: //服务的配置信息
FileServer://自己定义的服务
image: nginx:latest //使用的镜像名
container_name:'FileData'// docker容器名
restart: always//重启策略 always总是重新启动
ports:-'8003:8003' //映射端口信息 宿主端口:容器端口
volumes:// 定义了卷信息,提供给 services中的具体容器使用
-'./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf'//用户自己指定的目录:映射目录
-'./nginx/log:/var/log/nginx'
-'./file:/usr/share/nginx/file'
-'./web:/usr/share/nginx/html' //其他html连接目录
command:/bin/bash-c"nginx-g'daemon off;'" //覆盖容器启动后默认执行的命令
autoindex on;//是否显示文件目录 on显示 off关闭显示
autoindex_exact_size on;//显示文件确切大小 on显示字节单位 off 显示出文件的大概大小,单位是KB或者MB或者GB
autoindex_localtime on;//默认为off,显示的文件时间为GMT时间;改为on后,显示的文件时间为文件的服务器时间
charset utf-8,gbk;//显示的字符集
server{//服务配置
listen 8003;//监听端口,也可以加上IP地址,如,listen 127.0.0.1:8080;
server_name _;//定义网站域名,可以写多个,用空格分隔。
//匹配规则,在server{}里可以有很多location配置段
//root/alias是指定文件路径的两种方式 alias相当于重定向路径
//使用alias,目录名后面一定要加“/”
location/{//location后面跟的搜索路径
root/usr/share/nginx/file;//指定文件服务地址这里的目录是 yml文件里配置的映射目录
}
location/web/{
alias/usr/share/nginx/;//多个location的时候这里只需要指定映射目录的上级目录就行了
index index.html index.htm;//配置默认首页
}
}
java 怎么向nginx web服务器传输文件
搭建项目部署的环境
购买服务器
首先需要去阿里云购买服务器。本人购买的是Windows Server 2008,刚开始购买了基于Linux的各种系统(Ubuntu、CentOS、AliyunLinx、Debian),由于没有Linux操作基础,最后都没有鼓捣成功,还是先用Windows Server练练手,等了解了大体流程之后在迁移到Linux上。这是我购买的阿里云ECS实例
2
之后使用Windows操作系统自带的“远程桌面连接”工具直接连接到远程服务器:
连接成功之后就会进入到熟悉的Windows操作系统的桌面了,之后就可以安装各种部署的软件,如JDK、MySQL Database、Tomcat等常用的工具,和在本机上操作并无不同。
3
购买域名
服务器可以正常访问了,那么接下来就需要购置一个域名,通过域名即可跳转到相应的服务器IP,进而让所有的人都可以访问。
由于我的服务器是在阿里云购买的,阿里云和万网合并了,那么直接在阿里云中就可以一站式搞定。
4
stevejrong.top即我购买的域名。
选择一个域名后,点击“解析”以将域名映射到刚才开通的服务器上:
这里万网做了详细的介绍,在此就不多讲如何映射了。
5
域名备案
要想真正让所有人都能访问网站,那么就需要备案。由于服务器是在阿里云购置的,而阿里云和万网的服务现在已经合并,所以可以轻松申请备案。
部署项目
域名和服务器都准备好了,那么现在可以发布项目了。
这里我采用了Nginx反向代理服务器和Tomcat容器组合共同来支撑整个网站的运行。Nginx负责拦截并转发客户端发来的请求,它并不做页面的解析等工作,这些工作都交给Tomcat去处理,因为Nginx擅长处理请求,是一个高性能的反向代理服务器,它几乎没有处理Servlet请求的能力,所以要配合一个能够处理Servlet的容器共同协作,当然,Servlet容器有很多,如Resin、JBoss、Tomcat、GlassFish等等,选择Servlet容器就因人而异了,看自己喜欢用什么,还有一些适应的场景和环境。没有最好的,只有最适合的。Tomcat也未必最垃圾,只是看操作者的水平,能否合理优化是一个难题
安装和配置Nginx
解压后得到如下几个文件和文件夹:
打开conf目录下的nginx.conf文件,这个文件是Nginx服务器的配置文件:
配置代码和解释如下:
#user nobody;
#工作进程数
worker_processes 2;
#错误日志
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#进程保存文件
#pid logs/nginx.pid;
#等待事件
events{
#每个进程的最大连接数(最大连接数=连接数*进程数)
worker_connections 2048;
}
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;
#是否开启gzip压缩支持
#gzip on;
#第一个虚拟主机
server{
#监听到的端口
listen 80;
#主机名称
server_name www.stevejrong.top;
#设置字符编码格式
#charset koi8-r;
#本地虚拟主机的访问日志
#access_log logs/host.access.log main;
如果你还想了解更多这方面的信息,记得收藏关注本站。