一.安装 Nginx
1. nginx 安装环境
nginx 是 C 语言开发,建议在 linux 上运行
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
2.将 Nginx 安装包上传到 Linux 中
3.解压安装包:
tar -zxvf nginx-1.8.1.tar.gz
4.编译安装
进入到 nginx 的根目录:cd nginx-1.8.0
配置安装参数: ./configure --prefix=/usr/local/nginx
编译:make
编译安装 make install
5.nginx的启动和关闭
启动:./nginx
关闭:./nginx -s quit
重启:./nginx -s reload
6.测试
安装成功后,启动nginx,在浏览器上直接输入ip即可。(nginx默认监听的是80端口)
注意:记得关闭防火墙
配置虚拟主机
需求
一台 Linux 服务器绑定两个 ip:192.168.70.144、192.168.70.188
访问不同的 ip 请求不同的 html 目录,即:
访问 http://192.168.70.144 将访问“html144”目录下的 html 网页
访问 http://192.168.70.188 将访问“html188”目录下的 html 网页
二.Nginx的虚拟主机配置方式
Nginx 支持三种类型的虚拟主机配置
基于 IP 的虚拟主机
基于端口的虚拟主机
基于域名的虚拟主机
1.1基于 IP 的虚拟主机
- 将动态 IP 修改为静态 IP
--cd /etc/sysconfig/network-scripts
--vim ifcfg-eth0
IPADDR=192.168.10.144
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
DNS1=114.114.114.114
2)将/etc/sysconfig/network-scripts/ifcfg-eth0 文件复制一份,命名为
ifcfg-eth0:1;
--cp -rf ifcfg-eth0 ifcfg-eth0:1
修改复制后的ifcfg-eth0:1
--vim ifcfg-eht0:1
修改其中内容:
DEVICE=eth0:1
IPADDR=192.168.70.188
其他项不用修改
重启网络
--service network restart
3)修改 Nginx 的配置文件nginx.conf完成基于 IP 的虚拟主机配置
Nginx.conf
user root; (此处需要修改,分配权限)
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#一个 Server 就是一个虚拟主机
server {
listen 80;
#为虚拟机指定 IP 或者是域名
server_name 192.168.70.144;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
root html144;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一个 Server 就是一个虚拟主机
server {
listen 80;
#为虚拟机指定 IP 或者是域名
server_name 192.168.70.188;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
root html188;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
- 重启nginx
1.2基于端口的虚拟主机
1)需求
Nginx 对提供 8080 与 9090 两个端口的监听服务
请求 8080 端口则访问 html8080 目录下的 index.html
请求 9090 端口则访问 html9090 目录下的 index.html
修改 Nginx 的配置文件完成基于端口的虚拟主机配置
#一个 Server 就是一个虚拟主机 基于端口
server {
listen 8080;
server_name 192.168.70.188;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
root html8080;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一个 Server 就是一个虚拟主机
server {
listen 9090;
#为虚拟机指定 IP 或者是域名
server_name 192.168.70.188;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
root html9090;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2)重启nginx
1.3基于域名的虚拟主机
1)需求
两个域名指向同一个 nginx 服务器,用户访问不同的域名时显示不同的内容。
域名规划:
2)修改 windows 的 hosts 文件配置域名与 ip 的映射
文件路径:C:\Windows\System32\drivers\etc
修改 Nginx 的配置文件完成基于域名的虚拟主机配置
nginx.conf
server {
listen 80;
#为虚拟机指定 IP 或者是域名
server_name www.bjsxt.com;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
root html-bjsxt;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一个 Server 就是一个虚拟主机
server {
listen 80;
#为虚拟机指定 IP 或者是域名
server_name www.itbaizhan.cn;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
root html-itbaizhan;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
三、Nginx 中配置服务的反向代理
1需求
安装两个 tomcat 服务,通过 nginx 反向代理。
本案例中使用两台虚拟机演示。
tomcat 安装到 192.168.70.143 环境中。端口为 8080 与 9090
Nginx 安装在 192.168.70.144 环境中
2.反向代理实现
- 安装 2个tomcat
- 修改其中一台的端口号
vim server.xml(3个都加10)
- 修改tomcat首页进行区分 index.jsp
- 配置nginx的nginx.conf来实现服务的反向代理
修改:nginx.conf
user root;
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;
sendfile on;
keepalive_timeout 65;
upstream tomcat_server1{
server 192.168.70.143:8080;
}
upstream tomcat_server2{
server 192.168.70.143:9090;
}
server {
listen 80;
#为虚拟机指定 IP 或者是域名
server_name test.bjsxt.com;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
proxy_pass http://tomcat_server1;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一个 Server 就是一个虚拟主机
server {
listen 80;
#为虚拟机指定 IP 或者是域名
server_name test.itbaizhan.cn;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
proxy_pass http://tomcat_server2;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
测试结果:http://test.bjsxt.com 跳转到 ;server 192.168.70.143:8080;(tomcat1)
http://test.itbaizhan.cn 跳转到:server 192.168.70.143:9090;(tomcat2)
四、在反向代理中配置负载均衡
1.Nginx 负载均衡策略
1)轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后
端服务器 down 掉,能自动剔除。
2)指定权重
指定轮询几率,weight 和访问比率成正比,用于后端服务器
性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
3)IP 绑定 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访
问一个后端服务器,可以解决 session 的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
七、http 协议代理
由于 ftp 服务器是基于 ftp 协议处理的。那么现在我想在外部访问该图片,是没有办法
访问的。他是不能处理 http 协议的。所以我们需要拥有一个能够处理 http 协议代理服务器。
其实就是使用了 Nginx 的虚拟主机的方式。
1、需求
使用 Nginx 的基于域名的虚拟主机的方式来完成在 KindEditor 中添加图片时的图片回
显处理。
nginx:192.168.70.144
VSFTPD:192.168.70.144
注意:nginx 与 VSFTPD 必须安装到同一个环境中。
2解决 KindEditorDemo 项目中图片回显的问题
2.1修改系统的 hosts 文件
2.2修改项目的 resource.properties 文件
FTP_HOST=192.168.70.144
FTP_PORT=21
FTP_USERNAME=ftpuser
FTP_PASSWORD=ftpuser
FTP_BASEPATH=/home/ftpuser/
HTTP_BASE_PATH=http://img.bjsxt.com
2.3修改 nginx.conf
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
#为虚拟机指定 IP 或者是域名
server_name img.bjsxt.com;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的 web 目录
root /home/ftpuser/;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}