今天在網上尋找關於Nginx訪問中文目錄及檔案名的解決方法,偶然看到qwqg的一篇文章!
解決問題的思路很清晰,特轉載過來與大家一起分享! 該方法還沒有親自測試,所以不太確定是否真有用!
方法一:
搞了大半天nginx下無法訪問中文檔案名的問題,現在看來是secureCRT的問題?
看來還是字元集的問題了。
看來nginx不需要象apache那樣要單獨載入支援中文模組。
伺服器端字元集如下
[root@test]# locale
LANG=en_US. UTF-8
LC_CTYPE=」en_US. UTF-8″
LC_NUMERIC=」en_US. UTF-8″
LC_TIME=」en_US. UTF-8″
LC_COLLATE=」en_US. UTF-8″
LC_MONETARY=」en_US. UTF-8″
LC_MESSAGES=」en_US. UTF-8″
LC_PAPER=」en_US. UTF-8″
LC_NAME=」en_US. UTF-8″
LC_ADDRESS=」en_US. UTF-8″
LC_TELEPHONE=」en_US. UTF-8″
LC_MEASUREMENT=」en_US. UTF-8″
LC_IDENTIFICATION=」en_US. UTF-8″
LC_ALL=
在nginx.conf檔裡配置的字元集也是utf-8
server {
listen 80;
server_HTTP://www.aliyun.com/zixun/aggregation/11696.html">name test.cn;
root /data;
index index.html index.jsp;
charset utf-8;
用戶端用的是secureCRT,字元集用的是defalut,用rz上傳後在伺服器上用ls顯示亂碼,用ie怎麼流覽都不能正常看到。
找朋友測試了一下他那邊的nginx,中文顯示居然一切正常,後來他告訴我他的secrueCRT用的字元集是utf-8,我改用uft-8後再用rz上傳檔,在ie下中文可以正常顯示了。
方法二:
一:確定你的系統是UTF編碼
[root@Tserver ~]# env|grep LANG
LANG=en_US. UTF-8
二:NGINX設定檔裡設置為
server
{
listen 80;
server_name .inginx.com ;
index index.html index.htm index.php;
root /usr/local/nginx/html/inginx.com;
charset utf-8;
}
三:如果使用putty
windows --> translation -->UTF-8
mkdir NGINX中文技術站
echo NGINX中文技術站 > 中國.html
四,如果是用securecrt 上傳檔,請選擇 回話-->外觀--UTF-8
五,如果出現檔案名亂碼顯示
執行
for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done
另一位朋友的解決方案是:
我現在用的方法是
在後端個別目錄用APACHE代理了 。。
APACHE支援中文碼。。
location /~doc/ {
proxy_pass HTTP://127.0.0.1:81/;#apache server
}
以上供大家參考!