Nginx 설정 다운로드 파일 을 위 한 예제 코드
배치
http {
...
server: {
#
location /download {
root D:\\download;
autoindex on;
autoindex_exact_size off;
}
}
...
}
이것 은 디 렉 터 리 에 마음대로 놓 인 몇 개의 파일 로 성공 을 볼 수 있다.
여기 몇 개의 구 덩이 를 밟 았 습 니 다.아래 에 힌트 를 드 리 겠 습 니 다.
1.루트 경로 설정 문제
처음 설정 한 alias D:\download,오류 보고:2020/08/14 10:36:06[emerg]26396\#16140:invalid number of arguments in"alias"directive in D:\Program Fileginxginx-1.13.12/conf/nginx.conf:74
그렇다면 74 줄 을 조사해 보 니 점수 가 줄 어 든 데다 문 제 는 여전 하 다.루트 D 로 바 꾸 기:\\download;,오류:2020/08/14 10:44:20[emerg]21376\#17156:D:\\Program Fileginxginx-1.13.12/conf/ngix.conf:74
문 제 는 여전 하 다.나중에 경로 에 문제 가 있다 는 것 을 알 게 되 었 다.잘못 썼 다 면 아마...
root D:/download;
//
root D:\\download;
이 유 는 다 알 고 있 습 니 다.그냥 전의 문자 입 니 다.2.루트 와 alias 의 차이
ok,이렇게 설정 하면 됩 니 다.하지만 내 가 입력 하면:http://localhost/download/404 오류 가 발생 했 습 니 다.제 D 디스크 디 렉 터 리 아래 는 D:/다운 로드/*이 고 다른 파일 입 니 다.
시작 오류:2020/08/14 11:02:49[error]9928\#12876:*11 CreateFile()"D:\download\\/download"failed(2:시스템 이 지 정 된 파일 을 찾 을 수 없 음),client:127.0.0.1,server:,request:"GET/download HTTP/1.1",host:"localhost"
이 경 로 를 보 니 D:\download\/download 에 문제 가 있 습 니 다.그래서 루트 D:/download/를 설정 합 니 다.다음/지 웠 습 니 다.다시 시도 하 시 겠 습 니까?오류:2020/08/14 11:04:15[error]3128\#11636:*1 Create File()"D:\download/download"failed(2:The system cannot find the file specified),client:127.0.0.1,server:,request:"GET/download HTTP/1.1",host:"localhost"
그래서 경로 가 아 닌 문 제 를 감안 하면 문제 의 원인 은 어디 에 있 습 니까?루트 와 alias 설정 의 차이 점 에 있 습 니 다.
즉,rootD:/download;부탁http://localhost/download/그 가 찾 는 것 은 D:\download\download
alias D:/download;부탁http://localhost/download/D:\download
그러면 로 컬 경 로 를 바 꾸 겠 습 니 다.D:/다운 로드/다운 로드/*,그리고 다른 파일 이 있 으 면 성공 합 니 다.
3.중국어 파일 문제
그리고 구 덩이 는 전체 영문 이름 파일 을 클릭 하면 정상적으로 미리 보기 하여 다운로드 한 것 이 고 중국어 이름 파일 이 잘못 되 었 습 니 다.server 세그먼트 에 charset utf-8 추가 하기;안 되 거나
charset gbk,utf-8;
안 됩 니 다.분명 한 것 이 있 습 니 다.번 거 로 우 시 겠 지만 아낌없이 가르쳐 주 십시오.감사합니다.오랫동안 생각하면 nginx 설정 의 문제 가 아 닐 것 입 니 다.왜냐하면 많은 곳 에서 이렇게 설정 하면 중국 어 를 표시 할 수 있다 고 말 하기 때 문 입 니 다.그리고 시스템 인 코딩 문제 가 아 닐 까 생각 했 어 요.나 는 로 컬 로 서버 를 만든다.chcp 명령 을 사용 하여 시스템 인 코딩 을 확인 하여 936 을 표시 합 니 다.일반적으로 중국 어 를 정상적으로 표시 할 수 있 는 것 은 936 인 데,그것 은 문제 가 없다 는 것 을 설명 한다.
중국 어 는 정상 적 인 것 으로 나 타 났 지만**의 것 은 한 시 에 잘못 신고 하거나 어 지 럽 히 거나 404 입 니 다.중국어 이름 파일 다운 로드 를 직접 클릭 하거나 중국어 이름 디 렉 터 리 를 탐색 할 수 없습니다.
중국어 이름 파일 다운 로드 는 파일 이름 을 복사 한 다음 브 라 우 저 url 뒤에 붙 이면 다운로드 할 수 있 습 니 다.중국어 이름 디 렉 터 리 는 정말 탐색 할 수 없습니다!!
이 유 는 windows 서버 의 중국 어 는 gbk 인 코딩 입 니 다.nginx 의 이러한 페이지 의 href 는 gbk 로 urlencode 를 한 다음 에 일반 브 라 우 저 는 utf-8 을 사용 하기 때문에 당연히 방문 할 수 없습니다.
4.브 라 우 저가 파일 을 다운로드 하지 않 고 자동 으로 파일 을 여 는 것 을 방지 하려 면 추가
add_header Content-Disposition "attachment;";
//
location / {
add_header Content-Disposition "attachment;filename*=utf-8'zh_cn'$arg_n";
}
일반적으로 서버 에 저 장 된 파일 은 원래 이름 을 사용 하지 않 기 때문에 다운로드 할 때 이름 을 바 꿔 야 합 니 다.url 에 인 자 를 추가 한 다음 nginx 에서 매개 변수 에 따라 이름 을 바 꿀 수 있 습 니 다.예:인 자 는 n=xxx.jpg 입 니 다.
url:https"//xxxx?n=xxx.jpg//다운로드 한 파일 이름 을 xxx.jpg 로 바 꾸 는 것 을 의미 합 니 다.
nginx 설정 필요
location / {
if ($request_uri ~* ^.*\?n=([^&]+)$) {
add_header Content-Disposition "filename*=$arg_n";
}
}
설명:안의 utf-8 은 일부 브 라 우 저 에서 자동 으로 파일 을 urlencode 형식 으로 바 꿉 니 다.보통 1,2 는 다 같이 해 야 돼 요.
location / {
if ($request_uri ~* ^.*\?n=([^&]+)$) {
add_header Content-Disposition "attachment;filename*=$arg_n";
}
}
여기 서 Nginx 설정 이 다운로드 파일 을 실현 하 는 예제 코드 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 Nginx 다운로드 파일 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.