当前位置:首页 > linux教程 > 列表

lnmp环境nginx 配置多虚拟主机例子

发布:smiling 来源: PHP粉丝网  添加日期:2015-05-06 10:45:26 浏览: 评论:0 

配置多虚拟主机是每一台WEB服务器几乎会做的一个动作了,特别是我们这种小站长了,下文小编来为各位介绍lnmp环境nginx 配置多虚拟主机例子,希望例子可以帮助到大家.

1、首先进入 /usr/local/nginx/conf/ 目录(自己nginx安装的路径),刚编译好的nginx 在这个目录下是木有 vhost 目录的,创建好这个目录后,打开nginx.conf 文件,在 http 范围内添加 include vhost/*.conf,包含创建的虚拟主机配置文件,然后保存,创建虚拟目录共用的server文件,就是每个conf都会使用到的配置项,我们把他独立成一个模块供大家使用.

server.conf文件:

  1. location ~ .*\.(php|php5)?$ 
  2.     { 
  3.       #fastcgi_pass unix:/tmp/php-cgi.sock; 
  4.      fastcgi_pass 127.0.0.1:9000; 
  5.       fastcgi_index index.php; 
  6.       include fastcgi.conf; 
  7.     } 
  8.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$ 
  9.     { 
  10.       expires 30d; 
  11.   # access_log off; 
  12.    } 
  13.     location ~ .*\.(js|css)?$ 
  14.     { 
  15.       expires 15d; 
  16.    # access_log off; 
  17.    } 
  18. fastcgi_index: (nginx的默认首页文件) 

如果URI以斜线结尾,文件名将追加到URI后面,这个值将存储在变量$fastcgi_script_name中.

例如:

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;

fastcgi_pass:指定FastCGI服务器监听端口与地址,可以是本机或者其它.

用netstat -tln 查看端口使用情况:

tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN

可以看到9000端口处于监听状态:另外的其他fastcgi配置,放入fastcgi.conf公用配置文件中,server.conf 来包含他.

fastcgi.conf文件相关配置项:

  1. ​fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;#脚本文件请求的路径   
  2.  
  3. fastcgi_param  QUERY_STRING       $query_string; #请求的参数;如?app=123   
  4. fastcgi_param  REQUEST_METHOD     $request_method; #请求的动作(GET,POST)   
  5. fastcgi_param  CONTENT_TYPE       $content_type; #请求头中的Content-Type字段   
  6. fastcgi_param  CONTENT_LENGTH     $content_length; #请求头中的Content-length字段。     
  7. fastcgi_param  SCRIPT_NAME        $fastcgi_script_name; #脚本名称    
  8. fastcgi_param  REQUEST_URI        $request_uri; #请求的地址不带参数   
  9. fastcgi_param  DOCUMENT_URI       $document_uri; #与$uri相同。    
  10. fastcgi_param  DOCUMENT_ROOT      $document_root; #网站的根目录。在server配置中root指令中指定的值    
  11. fastcgi_param  SERVER_PROTOCOL    $server_protocol; #请求使用的协议,通常是HTTP/1.0或HTTP/1.1。     
  12. fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;#cgi 版本   
  13. fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;#nginx 版本号,可修改、隐藏   
  14. fastcgi_param  REMOTE_ADDR        $remote_addr; #客户端IP   
  15. fastcgi_param  REMOTE_PORT        $remote_port; #客户端端口   
  16. fastcgi_param  SERVER_ADDR        $server_addr; #服务器IP地址   
  17. fastcgi_param  SERVER_PORT        $server_port; #服务器端口   
  18. fastcgi_param  SERVER_NAME        $server_name; #服务器名,域名在server配置中指定的server_name 
  19. #fastcgi_param  PATH_INFO           $path_info;#可自定义变量   
  20. # PHP only, required if PHP was built with --enable-force-cgi-redirect   
  21. #fastcgi_param  REDIRECT_STATUS    200; 

2、准备好了公用文件server.conf 和 fastcgi.conf 后,进入vhost目录,之前手动创建的,创建虚拟主机.

  1. vim test.conf; 
  2. server 
  3.         listen 80; 
  4.         server_name test.cn; 
  5.         index index.html index.htm index.php; 
  6.         root /var/www/test; 
  7.         access_log /var/www/logs/test.log; 
  8.         error_log off; 
  9.         location / { 
  10.                 try_files $uri $uri/ /index.php$uri?$args; 
  11.         } 
  12.         if (!-e $request_filename) { 
  13.                 rewrite ^(.*)$ /index.php?s=$1 last; 
  14.                 break; 
  15.         } 
  16.         include server.conf; 

test.conf 虚拟主机文件配置完成

重启nginx:

记得先验证测试后再重启,否则会出现nginx 重启不来.

测试:/usr/local/nginx/sbin/nginx -t

没问题后进行重启:

重启:/usr/local/nginx/sbin/nginx -s reload

如果没有域名来解析指定到自己的主机ip,可以直接把自己的主机ip 指到本地,编辑C:\Windows\System32\drivers\etc\hosts 文件就可,加入:

  1. <二、我的实例> 
  2. --------- vhosts/led.conf 
  3.   server { 
  4.         listen       80; 
  5.         server_name   www.led.com 
  6.         index index.html index.htm index.php; 
  7.         root /usr/local/vhost/led; 
  8.         #charset koi8-r; 
  9.         #access_log  logs/host.access.log  main; 
  10.         location / { 
  11.             root  /usr/local/vhost/led; 
  12.             index  index.html index.htm index.php; 
  13.         } 
  14.         #error_page  404              /404.html; 
  15.         # redirect server error pages to the static page /50x.html 
  16.         # 
  17.         error_page   500 502 503 504  /50x.html; 
  18.         location = /50x.html { 
  19.             root   html; 
  20.         } 
  21.         # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
  22.         # 
  23.         #location ~ \.php$ { 
  24.         #    proxy_pass   http://127.0.0.1; 
  25.         #} 
  26.  
  27.     location ~ .*\.(php|php5)?$ 
  28.        { 
  29.         #fastcgi_pass unix:/tmp/php-cgi.sock; 
  30.          fastcgi_pass  127.0.0.1:9000; 
  31.          fastcgi_index index.php; 
  32.          fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name
  33.         include fastcgi_params; 
  34.        }      
  35.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 
  36.        { 
  37.         expires 30d; 
  38.        } 
  39.        location ~ .*\.(js|css)?$ 
  40.       { 
  41.        expires 1h; 
  42.        } 
  43.     log_format access '$remote_addr - $remote_user [$time_local] "$request" ' 
  44.                       '$status $body_bytes_sent "$http_referer" ' 
  45.                          '"$http_user_agent" $http_x_forwarded_for'
  46.         
  47.     } 
  48. ---------------- nginx.conf 
  49. user  nginx nginx; 
  50. worker_processes  8; 
  51. error_log  logs/error.log; 
  52. #error_log  logs/error.log  notice; 
  53. #error_log  logs/error.log  info; 
  54. pid        /usr/local/nginx/nginx.pid; 
  55. worker_rlimit_nofile 65535; 
  56. events { 
  57.     use epoll; 
  58.     worker_connections  65535; 
  59.  
  60. http { 
  61.     include       mime.types; 
  62.     default_type  application/octet-stream; 
  63.     #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
  64.     #                  '$status $body_bytes_sent "$http_referer" ' 
  65.     #                  '"$http_user_agent" "$http_x_forwarded_for"'
  66.     #access_log  logs/access.log  main; 
  67.     server_names_hash_bucket_size 128; 
  68.     client_header_buffer_size 32k; 
  69.     large_client_header_buffers 4 32k; 
  70.     client_max_body_size 8m; 
  71.     sendfile        on; 
  72.     tcp_nopush     on; 
  73.     #keepalive_timeout  0; 
  74.     keepalive_timeout  65; 
  75.     tcp_nodelay on; 
  76.     fastcgi_connect_timeout 300; 
  77.     fastcgi_send_timeout 300; 
  78.     fastcgi_read_timeout 300; 
  79.     fastcgi_buffer_size 64k; 
  80.     fastcgi_buffers 4 64k; 
  81.     fastcgi_busy_buffers_size 128k; 
  82.     fastcgi_temp_file_write_size 128k;   
  83.     gzip  on;  //phpfensi.com 
  84.     gzip_min_length 1k; 
  85.     gzip_buffers   4 16k; 
  86.     gzip_http_version 1.0; 
  87.     gzip_comp_level 2; 
  88.     gzip_types   text/plain application/x-javascript text/css application/xml; 
  89.     gzip_vary on; 
  90.     server { 
  91.         listen 80; 
  92.         server_name _; 
  93.         server_name_in_redirect off; 
  94.         location / { 
  95.         root /usr/share/nginx/html; 
  96.         index index.html; 
  97.         } 
  98.         } 
  99.         # 包含所有的虚拟主机的配置文件 
  100.         include /usr/local/nginx/conf/vhosts/*; 
  101.        
  102. }

Tags: lnmp环境 nginx配置

分享到: