前面讲了什么是nginx和nginx能干什么,如何在linux上安装nginx以及nginx配置文件字段含义。
本文主要学习nginx虚拟主机并进行基于端口的简单实战
nginx虚拟主机
nginx虚拟主机就是将一台服务器分割成多个“虚拟服务器”,每个虚拟服务器都有自己的硬盘空间;
nginx虚拟机是在web服务里的一个独立的网站站点,这个站点对应独立的域名(IP),具有独立的程序和资源目录,可以独立的对外提供服务。这个独立的站点配置是在nginx.conf中使用server{}代码块标签来表示一个虚拟主机。Nginx支持多个server{}标签,即支持多个虚拟主机站点。
实验:
环境 ubuntun 16.4
1,基于端口的虚拟主机
1,不同的server代表着不同的虚拟主机,所以应该在里面创建相应的server
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
server {
listen 8011;
listen [::]:8011;
root /var/www/html/aa;
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
2,创建对应的html文件
mkdir /var/www/html/aa
vim /var/www/html/aa/index.html 然后在里面写上 hello nginx
3,重新启动 nginx -s reload
4, 验证,访问 ip和ip:8011可以分别看到不同的结果
2,基于域名的虚拟主机
和上面的类似
1,简历和域名相对应数量的server 端口号相同,然后在server_name 后面对应不同的域名
2,之后重启,然后测试
3,基于IP的虚拟主机
基本步骤:增加网卡获得多ip或者增加辅助ip,修改nginx配置文件配置多ip,重启nginx服务,创建对应的不同站点目录并上传站点文件,也可都使用一个站点目录,通过多ip来访问
实现在同一个及其上运行java和php开发的服务器
原理:配置代理.
1.开启 php + apache 占用808端口,为程序入口
2.开启 tomcat ,修改端口为8080,为程序入口
3.开启 nginx 占用80端口,为请求总入口,以请求路径进行区分.
如:www.test.com 则是通过nginx代理访问 php 808入口,www.test.com/java ,则是通过nginx代理访问 tomcat 8080端口.
nginx 配置文件:
upstream app_server{
server 127.0.0.1:808;
}
upstream java_server{
server 127.0.0.1:8080;
}
location /
{
index index.php index.html index.htm;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://app_server;
}
location /java
{
index index.jsp index.html index.htm;
proxy_redirect off;
proxy_set_header Host remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://java_server;
}
分析nginx的工作目录,内容
[root@qishione nginx112]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
conf 存放nginx的配置文件的
nginx.conf 这里是控制nginx所有功能的文件
html 存放网页html的目录
index.html
logs 存放log日志文件
sbin 存放nginx可执行命令的
nginx脚本命令