文章目录
Http
协议的服务器统称为web服务器yum -y install nginx
nginx
启动
nginx -s stop
关闭
systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service
systemctl enable nginx.service
systemctl disable nginx.service
ps -A | grep nginx
: 检查http://IP地址
即可访问到主页,这里的端口号默认是80
/etc/nginx/nginx.conf
/usr/share/nginx/html
/etc/nginx/nginx.conf
(yum安装的路径)worker_processes 1; //worker进程,一般是电脑几核处理器就写几
events{
worker_connections 1024; //一个worker进程能够承受多少线程
}
http{
http协议通用参数
server{
虚拟主机参数
}
server{
虚拟主机参数
}
}
nginx -t -c /etc/nginx/nginx.conf
修改完成之后执行该命令,测试配置文件,热加载(不停机)配置文件nginx -s reload
: 重新启动nginx
### 前提
Centos7
使用yum install nginx
安装了Nginx
,那么这个Nginx的web
目录就在/usr/share/nginx/html
/etc/nginx/nginx.conf
chenjiabing.org
,并且将自己的域名解析
绑定在服务器的ip地址
上t1.chenjiabing.org
和t2.chenjiabing.org
解析在上面,那么我们在访问t1.chenjiabing.org
的时候才能找到ip
,随之找到自己的服务器,之后再根据在Nginx中配置的虚拟主机访问到对应的页面/etc/nginx/nginx.conf
的配置文件中只需要配置虚拟主机即可,这里我们配置两个虚拟主机 # 自己配置的虚拟主机
server{
listen 80; # nginx的端口
server_name t1.chenjiabing.org; # 访问的地址
location / {
root t1; # 这个虚拟主机对应的web目录,这里设置的路径为/usr/share/t1
index index.html; # 默认显示的首页
}
}
# 自己配置的虚拟主机
server{
listen 80;
server_name t2.chenjiabing.cn; # 访问的地址
location / {
# /usr/share/nginx/t2
root t2; # 这个虚拟主机的web目录
index index.html; # 显示的首页
}
}
# nginx默认的虚拟主机
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html; # 默认的web目录,其实这里可以写 html 是一样的
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
web
目录,我们只需要在/usr/share/nginx/
这个目录中新建t1
和t2
两个文件夹作为两个虚拟主机的web
目录,之后,在其中创建index.html
作为显示的主页即可Nginx
: nginx -t -c /etc/nginx/nginx.conf
nginx
: nginx -s reload
t1.chenjiabing.org
,那么浏览器就会自动访问到/usr/share/nginx/t1/index.html
显示首页内容,同样的输入http://t2.chenjiabing.org
t1.tedu.cn
就想要访问到服务器地址为:47.104.192.157
中Nginx配置的虚拟主机
/etc/hosts
C:\Windows\System32\Drivers\etc\hosts
/etc/hosts
中添加对应需要的域名和服务器的IP地址
sudo vi /etc/hosts
,输入以下内容47.104.192.157 t1.tedu.cn ## 前面是服务器的IP地址,后面是需要访问的域名,这个是没有申请的域名,可以直接写
47.104.192.157 t2.tedu.cn
ping t1.tedu.cn
查看是否能够找到对应的IP地址47.104.192.157
t1.tedu.cn
# 自己配置的虚拟主机
server{
listen 80; # nginx的端口
server_name t1.tedu.org; # 访问的地址
location / {
root t1; # 这个虚拟主机对应的web目录,这里设置的路径为/usr/share/t1
index index.html; # 默认显示的首页
}
}
# 自己配置的虚拟主机
server{
listen 80;
server_name t2.tedu.cn; # 访问的地址
location / {
# /usr/share/nginx/t2
root t2; # 这个虚拟主机的web目录
index index.html; # 显示的首页
}
}
# nginx默认的虚拟主机
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html; # 默认的web目录,其实这里可以写 html 是一样的
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
t1
和t2
的web目录t1.tedu.cn
即可访问到,不过这次只能在配置hosts
的本地机器使用,如果该机器没有配置这个hosts
文件,那么是不能访问的hosts
文件的机器的浏览器中输入http://t1.tedu.cn
,那么浏览器会查找本地的hosts
文件中是否存在对应的IP地址
server_name
,然后找到响应的页面SSL
加密的HTTP
通讯SSL
加密的TCP
协议443
CA
申请证书,配置到服务器上yum -y install nginx
安装的,那么这个路径就是确定了aliyun.com
中使用tom.canglaoshi.org
这个域名申请了HTTPS证书/etc/hosts
文件中添加对应的服务器的IP地址 tom.canglaoshi.org
47.104.192.157 tom.canglaoshi.org # 服务器IP地址 域名
/etc/nginx/ngxin.conf
添加一个虚拟主机server
,
include tom.conf;
这句话,那么我们再在/etc/nginx
创建一个tom.conf
配置文件即可,这样看的更加清除,其实就是使用了引入文件tom.conf
的内容如下,下面的路径都是使用的相对路径80端口
,因此假如我们在浏览器中输入http://tom.canglaoshi.org
那么将不会显示安全证书,因为https
协议使用的是443
端口,但是我们可以添加一个监听80端口的虚拟主机,设置server_name
为tom.canglaoshi.org
,同时使用301
重定向到https://tom.canglaoshi.org
,那么当在浏览器中输入http://tom.canglaoshi.org
的时候就会自动跳转到https://tom.canglaoshi.org
server{
liseten 80; # 默认端口,使用的http协议
server_name tom.canglaoshi.org;
return 301 https://tom.canglaoshi.org; # 这里定义的是重定向,如果使用http://tom.canglaoshi.org ,那么就会重定向到https://tom.canglaoshi.org
}
server {
listen 443; # 端口号 必须开启,必须使用Https协议才能访问到
server_name tom.canglaoshi.org; # 开启证书的域名,这个域名不能改变,因为我们就是使用这个域名开启证书的
ssl on;
ssl_certificate cert/214462831460580.pem; # 这个是开启证书的时候下载的文件,放在/etc/nginx/cert文件中
ssl_certificate_key cert/214462831460580.key; # 这个是开启证书的时候下载的文件,放在/etc/nginx/cert文件中
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root tom; # 这个是访问域名的时候显示的web目录,这需要自己在/usr/share/nginx中创建
index index.html; # 这个是显示的首页
}
}
214462831460580.key
和214462831460580.pem
放到/etc/nginx/cert
文件中,当然这个cert
文件需要我们自己创建nginx -t -c /etc/nginx/ngxin.conf
nginx -s reload
https://tom.canglaoshi.org
访问即可,我们将会看见地址栏中将会出现安全
两个字,那么证书就配置上了403
端口,必须使用https
访问chenjiabibing.org
和自己的服务器IP绑定在一起,那么我们可以直接在远程服务器中配置tom.chengjiabing.org
这个子域名申请证书,下载两个文件http://tts.tedu.cn
,一台远程服务器(IP地址:47.104.192.157),这台远程服务器使用Nginx分发请求给另外的三台,另外的三台使用的是Tomcat处理Nginx分发的请求,IP地址为:192.168.0.231
,192.168.0.176,
,192.168.0.174
Tomcat
容器都是开启的状态,我们可以在本地使用http://192.168.0.231:8080/
访问看看是否能够访问到该机器的Tomcattts.tedu.cn
没有和远程服务器的IP绑定,因此需要在本地机器配置/etc/hosts
文件中配置才可以用浏览器访问/etc/hosts
文件中添加47.104.192.157 tts.tedu.cn
即可ping tts.tedu.cn
查看能够成功/etc/nginx/nginx.conf
添加一句include tts.conf
tts.conf
放在/etc/nginx/
文件夹下即可tts.conf
配置文件如下:upstream toms {
server 192.168.0.231:8080; # 配置三台tomcat的处理器,端口是8080,因为tomcat的默认端口
server 192.168.0.176:8080;
server 192.168.0.174:8080;
}
server {
listen 80; # 监听的是80端口,浏览器默认使用80,当在本地机器上输入`http://tts.tedu.cn`
server_name tts.tedu.cn; ## 对应的域名
location / {
proxy_pass http://toms; # 这里的toms就是上面定义的集群信息
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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
/etc/hosts
的本地机器上输入http://tts.tedu.cn
即可访问,我们看到Nginx是将请求均匀分发到不同的集群机器上进行处理weight
upstream toms {
server 192.168.0.231:8080 weigth 10 ; # 配置三台tomcat的处理器,端口是8080,因为tomcat的默认端口
server 192.168.0.176:8080 weight 20;
server 192.168.0.174:8080 weight 30;
}
Redis
实现session共享问题session
的信息,此时就不需要重新登录了,但是可能当再次请求的时候,Nginx又将其分发到其他的应用服务器中了,但是这个应用服务器没有当前当前用户登录的session
信息,此时就需要重新登录,这个就是问题所在IP地址
通过散列算法
每次请求都保证Nginx将对应的Ip分发到同一台应用服务器ip_hash
即可upstream toms {
ip_hash;
server 192.168.0.231:8080 weigth 10 ; # 配置三台tomcat的处理器,端口是8080,因为tomcat的默认端口
server 192.168.0.176:8080 weight 20;
server 192.168.0.174:8080 weight 30;
}
down
即可,比如server 192.168.0.174:8080 weight 30 down
就表示该服务器下线了3306端口
,这个在阿里云
的服务器开启即可
grant all privileges on *.* to 用户名@"IP地址" identified by "密码"
grant all privileges on tedu_store.* to tedu@"%" identified by "tedu";
tedu_store
,用户名为tedu
,用户密码为tedu
mysql -h IP地址 -u 用户名 -p
mysql -h 47.104.152.197 -u tedu -p
,之后直接输入密码即可,那么连接的就是远程数据库url
为远程数据库了,那么就可实现多个应用服务器共享一个数据库,实现数据的共享了,不会导致数据错乱了MySQL
数据库服务器,存储项目数据Redis
服务器,实现session共享,实现Redis缓存Tomcat
,Nginx根据不同的策略将请求分发给不同应用服务器处理