![]() |
Nginx配置虚拟主机(多网站) - Printable Version +- MyBBS (https://bbs.mjjjd.eu.org) +-- Forum: My Category (https://bbs.mjjjd.eu.org/forumdisplay.php?fid=1) +--- Forum: WEB (https://bbs.mjjjd.eu.org/forumdisplay.php?fid=3) +--- Thread: Nginx配置虚拟主机(多网站) (/showthread.php?tid=43) |
Nginx配置虚拟主机(多网站) - adahrzgj - 08-21-2022 假要你所在的公司由于预算问题,现在只能提供一台服务器,但是有以下几个网站:www.yourmall.com, m.yourmall.com,www.yourcrm.com需要部署,并且你已经根据我们上一篇文章中安装配置了,实现以下需求。 www.yourmall.com是公司的电子商务平台。 m.yourmall.com 是公司的电子商务平台子站,用于移动端用户的访问。 www.yourcrm.com 是公司的用户关系管理系统。 现在为以上网站在服务器上规划目录,创建一个目录:/var/sites,为上面三个站点分别创建一个目录: www.yourmall.com对应创建的目录为: /var/sites/yourmall m.yourmall.com 对应创建的目录为: /var/sites/m_yourmall www.yourcrm.com 对应创建的目录为: /var/sites/yourcrm 如下图所示 - [root@localhost sites]# mkdir /var/sites/yourmall [root@localhost sites]# mkdir /var/sites/m_yourmall [root@localhost sites]# mkdir /var/sites/yourcrm [root@localhost sites]# pwd /var/sites [root@localhost sites]# ll total 0 drwxr-xr-x. 2 root root 6 Apr 28 04:23 m_yourmall drwxr-xr-x. 2 root root 6 Apr 28 04:23 yourcrm drwxr-xr-x. 2 root root 6 Apr 28 04:23 yourmall [root@localhost sites]# 1. 第一个域名/网站配置 打开Nginx的配置文件:/usr/local/nginx/conf/nginx.conf ,并在 http 块下加入以下子块server,如下配置内容所示 - # vhost for yourmall.com configure. server { listen 80; server_name www.yourmall.com yourmall.com; #charset koi8-r; #access_log logs/yourmall.access.log main; location / { root /var/sites/yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/yourmall; } location ~ \.php$ { root /var/sites/yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } 现在,完整的Nginx配置文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 - #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.html; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.html; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.html; # } #} # vhost for yourmall.com configure. server { listen 80; server_name www.yourmall.com yourmall.com; #charset koi8-r; #access_log logs/yourmall.access.log main; location / { root /var/sites/yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/yourmall; } location ~ \.php$ { root /var/sites/yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } } 在目录 /var/sites/yourmall 下创建一个文件:index.html用于测试网站的配置情况,其代码如下 - <!DOCTYPE html> <html> <head> <title>Welcome To Yourmall.com</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>欢迎您访问:Yourmall.com </h1> <p>这是 Yourmall.com 的首页,仅用于Nginx的虚拟机配置测试演示。</p> <p> <a href="http://www.yiibai.com/">yourmall.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> 现在,重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost sites]# 然后执行重新加载Nginx配置文件 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload [root@localhost sites]# 到了这一步,我们来看看网站 www.yourmall.com 是否配置成功,接下来我们要访问这个域名,看能不能看到我们在上面写入的 index.html 文件中的内容。在测试访问www.yourmall.com 域名之前,我们还要对这个域名进行映射(外网称为解析)。在局域网内的一台Windows计算机上打开文件 C:\Windows\System32\drivers\hosts,在这个文件的最后一行加入以下内容 - 192.168.0.134 www.yourmall.com 192.168.0.134 yourmall.com 注意:在这里,192.168.0.134 是配置Nginx服务器的IP,如果你的服务器不是这个IP,请写上对应的服务器IP。 现在,打开浏览器,访问以下网站域名: www.yourmall.com 或 yourmall.com ,没有错误,应该会看到以下界面 - 就这样,第一个网站的配置完成了! 2. 第二个域名/网站配置 现在,我们来配置第二个网站:m.yourmall.com, 假设 m.yourmall.com 这个网站它是 www.yourmall.com 的二级域名网站,主要用于服务主站 www.yourmall.com 的移动端访问用户。 打开Nginx的配置文件:/usr/local/nginx/conf/nginx.conf ,并在 http 块下加入以下子块server,如下配置内容所示 - # 手机/移动端网站 vhost for m.yourmall.com configure. server { listen 80; server_name m.yourmall.com; #charset koi8-r; #access_log logs/m_yourmall.access.log main; location / { root /var/sites/m_yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/m_yourmall; } location ~ \.php$ { root /var/sites/m_yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } 现在,完整的Nginx配置文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 - #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.html; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } # vhost for yourmall.com configure. server { listen 80; server_name www.yourmall.com yourmall.com; #charset koi8-r; #access_log logs/yourmall.access.log main; location / { root /var/sites/yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/yourmall; } location ~ \.php$ { root /var/sites/yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } # 手机/移动端网站 vhost for m.yourmall.com configure. server { listen 80; server_name m.yourmall.com; #charset koi8-r; #access_log logs/m_yourmall.access.log main; location / { root /var/sites/m_yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/m_yourmall; } location ~ \.php$ { root /var/sites/m_yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } } 在目录 /var/sites/m_yourmall 下创建一个文件:index.html用于测试网站的配置情况,其代码如下 - <!DOCTYPE html> <html> <head> <title>Welcome To Yourmall.com</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>欢迎您访问:m.yourmall.com </h1> <p>这是 Yourmall.com 主站的子域名:<a href="http://www.yiibai.com/">m.yourmall.com</a> ,仅用于Nginx的虚拟机配置测试演示。</p> <p> <a href="http://www.yiibai.com/">m.yourmall.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> 现在,重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost sites]# 然后执行重新加载Nginx配置文件 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload [root@localhost sites]# 到了这一步,我们来看看网站 m.yourmall.com 是否配置成功,接下来我们要访问这个域名,看能不能看到我们在上面写入的 index.html 文件中的内容。在测试访问m.yourmall.com 域名之前,我们还要对这个域名进行映射(外网称为解析)。在局域网内的一台Windows计算机上打开文件 C:\Windows\System32\drivers\hosts,在这个文件的最后一行加入以下内容 - 192.168.0.134 m.yourmall.com 注意:在这里,192.168.0.134 是配置Nginx服务器的IP,如果你的服务器不是这个IP,请写上对应的服务器IP。 现在,打开浏览器,访问以下网站域名: m.yourmall.com 没有错误,应该会看到以下界面 - 就这样,第二个网站(子域名)的配置完成了! 3. 第三个域名/网站配置 接下来,我们来配置第三个网站:www.yourcrm.com, 假设 www.yourcrm.com 这个网站它是一个客户管理系统,主要记录客户信息的管理网站。 注意:配置这个网站与第一个网站类似,只是指定/使用文件目录不太一样。 打开Nginx的配置文件:/usr/local/nginx/conf/nginx.conf ,并在 http 块下加入以下子块server,如下配置内容所示 - # 客户管理系统 vhost for yourcrm.com configure. server { listen 80; server_name www.yourcrm.com yourcrm.com; #charset koi8-r; #access_log logs/yourcrm.access.log main; location / { root /var/sites/yourcrm; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/yourcrm; } location ~ \.php$ { root /var/sites/yourcrm; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } 现在,完整的Nginx配置文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 - #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.html; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } # vhost for yourmall.com configure. server { listen 80; server_name www.yourmall.com yourmall.com; #charset koi8-r; #access_log logs/yourmall.access.log main; location / { root /var/sites/yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/yourmall; } location ~ \.php$ { root /var/sites/yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } # 手机/移动端网站 vhost for m.yourmall.com configure. server { listen 80; server_name m.yourmall.com; #charset koi8-r; #access_log logs/m_yourmall.access.log main; location / { root /var/sites/m_yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/m_yourmall; } location ~ \.php$ { root /var/sites/m_yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } # 客户管理系统 vhost for yourcrm.com configure. server { listen 80; server_name www.yourcrm.com yourcrm.com; #charset koi8-r; #access_log logs/yourcrm.access.log main; location / { root /var/sites/yourcrm; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/yourcrm; } location ~ \.php$ { root /var/sites/yourcrm; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } } 在目录 /var/sites/yourcrm 下创建一个文件:index.html用于测试网站的配置情况,其代码如下 - <!DOCTYPE html> <html> <head> <title>Welcome To YourCrm.com</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>欢迎您访问:yourcrm.com </h1> <p>这是 yourcrm.com 网站的首页 ,仅用于Nginx的虚拟机配置测试演示。</p> <p> <a href="http://www.yiibai.com/">yourcrm.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html> 现在,重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost sites]# 然后执行重新加载Nginx配置文件 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload [root@localhost sites]# 到了这一步,我们来看看网站 www.yourcrm.com 是否配置成功,接下来我们要访问这个域名,看能不能看到我们在上面写入的 index.html 文件中的内容。在测试访问www.yourcrm.com 域名之前,我们还要对这个域名进行映射(外网称为解析)。在局域网内的一台Windows计算机上打开文件 C:\Windows\System32\drivers\hosts,在这个文件的最后一行加入以下内容 - 192.168.0.134 www.yourcrm.com 192.168.0.134 yourcrm.com 注意:在这里,192.168.0.134 是配置Nginx服务器的IP,如果你的服务器不是这个IP,请写上对应的服务器IP。 现在,打开浏览器,访问以下网站域名: www.yourcrm.com 或 yourcrm.com ,没有错误,应该会看到以下界面 - 就这样,第三个网站的配置完成了! 4. 优化配置 经过了上面三个网站的配置,相信你可能觉得 Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf 内容有点多了,这还只是最简单的配置(还未包函重写,日志记录等规则),从头看到尾多少有点不太方便,能不能有更好的办法解决这个问题? 当然可以。我们可以把每个网站的配置独立成一个配置文件,然后在主配置文件中使用 include 指令包函进来。 现在来看看怎么修改配置,首先分别创建三个网站的配置文件: www.yourmall.com -> /usr/local/nginx/conf/vhosts/yourmall.conf m.yourmall.com -> /usr/local/nginx/conf/vhosts/m_yourmall.conf www.yourcrm.com -> /usr/local/nginx/conf/vhosts/yourcrm.conf 再将上面配置中对应每个网站的文件包括放入主配置文件。例如,对于文件 /usr/local/nginx/conf/vhosts/yourmall.conf 放置的文件内容如下: # vhost for yourmall.com configure. server { listen 80; server_name www.yourmall.com yourmall.com; #charset koi8-r; #access_log logs/yourmall.access.log main; location / { root /var/sites/yourmall; index index.html index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/sites/yourmall; } location ~ \.php$ { root /var/sites/yourmall; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } 其它两个网站也同样放入对应配置。 在主配置文件:/usr/local/nginx/conf/nginx.conf 中,包函上述三个文件即可。现在文件:/usr/local/nginx/conf/nginx.conf的内容如下所示 - #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include 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 logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.html; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name; include fastcgi_params; } } # 网站配置 include /usr/local/nginx/conf/vhosts/yourmall.conf; include /usr/local/nginx/conf/vhosts/m_yourmall.conf; include /usr/local/nginx/conf/vhosts/yourcrm.conf; } 重新加载Nginx配置文件,在加载配置文件之前,最好先测试一下配置文件语法是否正确,使用以下命令来测试 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost sites]# 然后执行重新加载Nginx配置文件 - [root@localhost sites]# /usr/local/nginx/sbin/nginx -s reload [root@localhost sites]# 到此,在Nginx上配置虚拟机演示实例就完了。 11人点赞 Nginx 作者:易百教程 链接:https://www.jianshu.com/p/8a4f37198589 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |