curl访问localhost不通,127.0.0.1通

这个问题在 https://sourceforge.net/p/curl/bugs/1337/ 有说过。
原因是因为hosts中有把localhost解析成ipv6地址,curl先访问ipv6地址,不通再访问ipv4,但是curl有bug没有访问v4地址。

# 本地hosts

[root@MiWiFi-RA69-srv crm]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# 测试

[root@MiWiFi-RA69-srv crm]# curl localhost:10080
^C
[root@MiWiFi-RA69-srv crm]# curl 127.0.0.1:10080
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>

方法1,通过指定-4参数强制走v4

[root@MiWiFi-RA69-srv crm]# curl localhost:10080 -4
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>

# 方法2,删掉ipv6再测试

[root@MiWiFi-RA69-srv crm]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

[root@MiWiFi-RA69-srv crm]# curl localhost:10080
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.12.2</center>
</body>
</html>

nginx配置webdav做为网盘

# github 上下载额外的模块才能完整支持webdav的客户端
https://github.com/arut/nginx-dav-ext-module
此模块增加 PROPFIND,OPTIONS,LOCK,UNLOCK 这几个请求方法的支持。
在nginx官方提到了”WebDAV clients that require additional WebDAV methods to operate will not work with this module.”,所以需要此三方模块。

# nginx 自带的 ngx_http_dav_module 支持 PUT, DELETE, MKCOL, COPY, MOVE 请求方法。
http://nginx.org/en/docs/http/ngx_http_dav_module.html

[root@MiWiFi-RA69-srv tar.gz]# git clone https://github.com/arut/nginx-dav-ext-module.git
[root@MiWiFi-RA69-srv nginx-1.19.9]# yum install -y libxml2-devel libxslt-devel
[root@MiWiFi-RA69-srv nginx-1.19.9]# ./configure --prefix=/home/software/nginx --with-http_ssl_module --with-http_dav_module --add-module=../nginx-dav-ext-module/
[root@MiWiFi-RA69-srv nginx-1.19.9]# make && make install
[root@MiWiFi-RA69-srv ~]# mkdir  /home/dav
[root@MiWiFi-RA69-srv ~]# chmod -R 777  /home/dav

# nginx配置

server {
	listen       80;
	server_name  localhost;

	location /dav
	{
		client_max_body_size 5G;
		alias /home/dav;
		index index.html index.htm;
		autoindex on;
		client_body_temp_path /tmp;
		
		# ngx_http_dav_module 模块支持
		dav_methods PUT DELETE MKCOL COPY MOVE;
		create_full_put_path on;
		
		# nginx-dav-ext-module 模块支持
		dav_ext_methods PROPFIND OPTIONS LOCK UNLOCK;	
	}
}

启动nginx

客户端用 Cyberduck 软件,官网:https://cyberduck.io/

另外也可以添加nginx的auth_basic认证实现用户登陆验证。