让VPS的 Nginx 支持中文url

林继 VPS 知识 2,209 共写了475个字 (2012-06-17 21:41:05) 没有评论 打印 扫描二维码 百度未收录

新买的VPS,安装了 CentOS 5.5,储存了带中文的mp3或jpg文件,发现在调用时 有404 出错,找不到文件,估计是中文编码的问题,搜索下,解决方法就是把 Linux 系统字符集设成utf8,是设成 en_US.utf8还是zh_CN.utf8,经我测试,好象二者皆可,我选择了 en_US.utf8。

用”locale”查看系统的编码(默认就是 POSIX,关于 locale 详解,可以参看这里):

  1. #locale
  2.  
  3. LANG= 
  4. LC_CTYPE="POSIX" 
  5. LC_NUMERIC="POSIX" 
  6. LC_TIME="POSIX" 
  7. LC_COLLATE="POSIX" 
  8. LC_MONETARY="POSIX" 
  9. LC_MESSAGES="POSIX" 
  10. LC_PAPER="POSIX" 
  11. LC_NAME="POSIX" 
  12. LC_ADDRESS="POSIX" 
  13. LC_TELEPHONE="POSIX" 
  14. LC_MEASUREMENT="POSIX" 
  15. LC_IDENTIFICATION="POSIX" 
  16. LC_ALL=

显然我的系统字符集还不是utf8,将下面这句加入到文件 /etc/profile,”vi /etc/profile”,就加在最下面好了:

  1. export LANG=en_US.UTF8

保存退出,重新启动系统,运行 locale,结果如下:

  1. # locale
  2.  
  3. LANG=en_US.UTF8 
  4. LC_CTYPE="en_US.UTF8" 
  5. LC_NUMERIC="en_US.UTF8" 
  6. LC_TIME="en_US.UTF8" 
  7. LC_COLLATE="en_US.UTF8" 
  8. LC_MONETARY="en_US.UTF8" 
  9. LC_MESSAGES="en_US.UTF8" 
  10. LC_PAPER="en_US.UTF8" 
  11. LC_NAME="en_US.UTF8" 
  12. LC_ADDRESS="en_US.UTF8" 
  13. LC_TELEPHONE="en_US.UTF8" 
  14. LC_MEASUREMENT="en_US.UTF8" 
  15. LC_IDENTIFICATION="en_US.UTF8" 
  16. LC_ALL=

NGINX配置文件里添加一句 “charset utf-8″,设置为类似下面的

  1. server 
  2. {  
  3.   listen 80;  
  4.   server_name www.xxx.net;  
  5.   index index.html index.htm index.php;  
  6.   root  /home/wwwroot;  
  7.   charset utf-8; 
  8. }

重新启动 LNMP,/root/lnmp restart,看看如何。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >