Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
来源:互联网 发布:熊片数据库 编辑:程序博客网 时间:2024/06/01 07:31
Nginx 是一个轻量级高性能的 Web 服务器, 并发处理能力强, 消耗资源小, 无论是静态服务器还是网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高,目前很多大型网站都在使用Nginx做为 Web 服务器,例如:人人网。另外淘宝研发大军针对大访问量网站的需求,对Nginx做了专门的定制,添加了很多高级功能和特性(Tengine),Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。
本文将讲解如何在Ubuntu Linux上使用 Nginx Web服务器来实现一台电脑一个端口(80)搭建多个网站。
绝大多数的 Nginx 运行在 Linux 机器上, 虽然有 Windows 移植版,但在Windows下的测试发现Nginx发挥不是很好. 所以本文将以 Linux 为例讲解, 而 Mac OS 或其他 Unix like 机器上的操作应该是一样的.
Nginx版本
lg@lg-PC:~$ nginx -vnginx version: nginx/1.3.10
nginx配置文件默认目录结构
/etc/nginx/├── conf.d│ ├── default.conf│ ├── example_ssl.conf├── fastcgi.conf├── fastcgi_params├── koi-utf├── koi-win├── mime.types├── nginx.conf├── scgi_params├── uwsgi_params└── win-utf1 directory, 11 files
增加 Nginx 虚拟主机
配置 Virtual host 步骤如下:
1.检查/etc/nginx/nginx.conf配置文件,确保文件中有:include /etc/nginx/conf.d/*.conf; 例如:
user lg;worker_processes 2;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024; debug_connection 127.0.0.1; debug_connection 192.168.1.0/24;}http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; client_max_body_size 13m; #gzip on; include /etc/nginx/conf.d/*.conf;}
2.关键步骤,在目录/etc/nginx/conf.d/下面新建文件site1.conf,site2.conf,文件名任意写,自己看明白就OK,后缀名需要与步骤1配置的一致,这里为.conf。site1代表我们的第一个站点,site2代表我们的第二个站点,下面我们看看两个文件都需要写点什么:
site1.conf:
server {listen80;server_name~^\d+\.\d+\.\d+\.\d+$;#charset koi8-r;error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 503 504 /50x.html;error_log/var/log/nginx/debug.log debug;indexindex.html index.htm;root /home/lg/www/;location /svn {root /home/lg/www/;index index.html;} location = /favicon.ico { try_files $uri $uri/favicon.ico /home/lg/www/favicon.ico =404; }location /share {root /home/lg/Downloads;} # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store(Mac). location ~ /\. { deny all; }location ^~ /packages {root /home/lg/Downloads/1software;autoindex on;autoindex_exact_size on;autoindex_localtime on;allowall;}location ^~ /Music {root /home/lg/;autoindex on;autoindex_exact_size on;autoindex_localtime on;allowall;}location ^~ /Videos {root /home/lg/;autoindex on;autoindex_exact_size on;autoindex_localtime on;allowall;}location ^~ /html5 {root /home/lg/workspace/nodejs/;index index.html index.htm;}location ^~ /NginxStatus {stub_statuson;access_logon;#auth_basic'NginxStatus';#auth_basic_user_fileconf.d/htpasswd}location = /50x.html {root /usr/share/nginx/html;}location = /404.html {root /usr/share/nginx/html;}}
site2.conf:
server { listen 80; server_name ~^openlg.net$; root /home/lg/workspace/phpworkspace/wp; index index.php index.html index.htm; location = /favicon.ico { try_files /home/lg/www/favicon.ico =404; #log_not_found off;#access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store(Mac). location ~ /\. {deny all; } location ~* /(?:uploads|files)/.*\.php$ {deny all; } location / {try_files $uri $uri/ /index.php?$args; } location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { access_log off; log_not_found off; expires max; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {expires 24h;log_not_found off; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ {try_files $uri =404;fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;fastcgi_pass 127.0.0.1:9000; }}
3.测试配置文件,没问题就加载新配置文件
lg@lg-PC:~$ sudo nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successfullg@lg-PC:~$ sudo kill -HUP `cat /var/run/nginx.pid`lg@lg-PC:~$
4.打开文件/etc/hosts,添加
127.0.0.1openlg.net
5.打开浏览器分别请求下面的地址进行测试,如果相应内容不一样,那么咱们就大功告成了。
http://127.0.0.1http://openlg.net
到这里,大家也许已经明白怎么回事了,我再罗嗦两句,我这里的site1.conf相当与一个静态文件服务器,site2.conf是一个php的网站,大家可以看到配置文件中加粗显示的两行:listen和server_name分别代表监听端口和虚拟主机名称。80端口没得说,重点解释下server_name,server_name用的是正则表达式,~^\d+\.\d+\.\d+\.\d+$匹配所有的ip地址,~^openlg.net$匹配openlg.net,这里也可以直接写成server_name 127.0.0.1;或者server_name openlg.net;
当我们请求http://127.0.0.1/时,nginx会使用两个server_name配置的正则表达式分别去测试请求地址中的127.0.0.1来决定使用那个虚拟主机,这里当然就是使用site1.conf中配置的server了。当我们请求http://openlg.net/时,nginx就会选择使用site2.conf中配置的server了。
- Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
- Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
- Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
- Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
- Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
- Nginx-一个IP配置多个站点
- nginx的虚拟主机功能(nginx多站点,绑定多个域名)-----nginx的学习之路
- 在ubuntu利用nginx反响代理在一个端口下配置多个站点
- nginx配置多个站点共用80端口
- Nginx实现多虚拟主机配置
- Nginx实现多虚拟主机配置
- nginx 多个站点配置
- nginx配置多个站点
- .nginx的虚拟主机功能(nginx多站点,绑定多个域名)
- nginx 配置虚拟主机,实现在一个服务器可以访问多个网站
- Nginx实现虚拟主机配置
- 使用nginx配置虚拟主机
- docker nginx实现一个主机部署多个站点
- 使用 jquery获取canvas对象报错
- 第四周 项目4 猴子选大王
- 重启phpserver
- JS学习
- android 文件读写
- Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机)
- node.js基础学习
- linux按文件大小排序
- 表单元素的readonly与disabled的区别
- 论客户端应用架构
- 相机拍照功能之权限和Android6.0版本问题
- 第五周项目一(建立顺序栈算法库)
- Netty权威指南读书笔记-第一章
- intellij IDEA配置tomcat