注:在后文的网页测试过程中的IP由于环境不同有所不一一对应
什么是tomcat:
Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等
开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,
是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,
可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,
所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,
Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,
独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
系统实验环境:
server3:172.25.254.3,server3和server5搭建jdk环境
server5:172.25.254.6
server6:172.25.254.8作负载均衡
server3搭建jdk环境:
[root@serve3 ~]# ls
jdk-7u79-linux-x64.tar.gz
[root@serve3 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ 解压到指定路径
[root@serve3 ~]# ls
jdk-7u79-linux-x64.tar.gz
[root@serve3 ~]# cd /usr/local/
[root@serve3 local]# ls
bin etc games include jdk1.7.0_79 lib lib64 libexec sbin share src
[root@serve3 local]# in -s jdk1.7.0_79/ java
-bash: syntax error near unexpected token `in'
[root@serve3 local]# ln -s jdk1.7.0_79/ java 制作软链接
[root@serve3 local]# vim /etc/profile 修改全局变量
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@serve3 local]# source /etc/profile 生效
[root@serve3 local]# echo $PATH 测试全局变量
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
[root@serve3 local]# echo $JAVA_HOME
/usr/local/java
[root@serve3 local]# vim /etc/profile
[root@serve3 local]# cd
[root@serve3 ~]# vim test.java 测试jdk环境
public class test
{
public static void main(String[] args)
{
System.out.println("hello world");
}
}
[root@serve3 ~]# javac test.java 编译
[root@serve3 ~]# ls
jdk-7u79-linux-x64.tar.gz test.class test.java 编译完成会生成test.class文件
[root@serve3 ~]# file test.class 查看文件类型是一个java库文件
test.class: compiled Java class data, version 51.0
[root@serve3 ~]# java test 测试
Hello World
[root@serve3 ~]# ls
apache-tomcat-7.0.37.tar.gz jdk-7u79-linux-x64.tar.gz test.class test.java
[root@serve3 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/ 解压到指定路径
[root@serve3 ~]# cd /usr/local/
[root@serve3 local]# ln -s apache-tomcat-7.0.37/ tomcat 制作软链接
[root@serve3 local]# cd tomcat/
[root@serve3 tomcat]# bin/startup.sh 开启tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@serve3 tomcat]# netstat -antlp|grep :8080 查看tomcat默认端口8080是否开启
tcp 0 0 :::8080 :::* LISTEN 1627/java
在网页测试:
[root@serve3 tomcat]# cd /usr/local/tomcat/webapps/ROOT/ tomcat默认发布目录
[root@serve3 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@serve3 ROOT]# vim test.jsp 写一个测试页
[root@serve3 ROOT]# cat test.jsp
The time is: <%=new java.util.Date()%>
[root@serve3 ROOT]# cd
在网页测试:
在server5进行相同的操作:
[root@server5 ~]# ls
apache-tomcat-7.0.37.tar.gz nginx-1.10.1.tar.gz
jdk-7u79-linux-x64.tar.gz nginx-sticky-module-ng.tar.gz
[root@server5 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[root@server5 ~]# cd /usr/local/
[root@server5 local]# ln -s jdk1.7.0_79/ java
[root@server5 local]# vim /etc/profile
[root@server5 local]# cat /etc/profile | tail -n 3
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server5 local]# source /etc/profile
[root@server5 local]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
[root@server5 local]# echo $JAVA_HOME
/usr/local/java
[root@server5 local]# cd
[root@server5 ~]# vim test.java
[root@server5 ~]# cat test.java
public class test {
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
[root@server5 ~]# javac test.java
[root@server5 ~]# ls
apache-tomcat-7.0.37.tar.gz nginx-1.10.1.tar.gz test.class
jdk-7u79-linux-x64.tar.gz nginx-sticky-module-ng.tar.gz test.java
[root@server5 ~]# file test.class
test.class: compiled Java class data, version 52.0
[root@server5 ~]# java test
Hello World
[root@server5 ~]# cd
[root@server5 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
[root@server5 ~]# cd /usr/local/
[root@server5 local]# ln -s apache-tomcat-7.0.37/ tomcat
[root@server5 local]# cd tomcat/
[root@server5 tomcat]# bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@server5 tomcat]# netstat -antlp|grep :8080
tcp 0 0 :::8080 :::* LISTEN 1218/java
在网页测试:
[root@server5 tomcat]# cd /usr/local/tomcat/webapps/ROOT/
[root@server5 ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[root@server5 ROOT]# vim test.jsp
[root@server5 ROOT]# cat test.jsp
server3 time is: <%=new java.util.Date()%>
在网页测试:
在server6编译nginx进行负载均衡的配置:
[root@server6 ~]# ls
nginx-1.10.1.tar.gz nginx-sticky-module-ng.tar.gz
[root@server6 ~]# tar zxf nginx-1.10.1.tar.gz
[root@server6 ~]# tar zxf nginx-sticky-module-ng.tar.gz
[root@server6 ~]# cd nginx-1.10.1
[root@server6 nginx-1.10.1]# vim src/core/nginx.h
14 #define NGINX_VER "nginx" ##删除版本号,安全一点!
[root@server6 nginx-1.10.1]# vim auto/cc/gcc
179 #CFLAGS="$CFLAGS -g" ##注释掉这行,忽略编译信息,安装的容量会变小。
[root@server6 nginx-1.10.1]# yum install gcc pcre-devel openssl-devel -y
[root@server6 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-threads --user=nginx --group=nginx --add-module=/root/nginx-sticky-module-ng
[root@server6 nginx-1.10.1]# make && make install 编译三部曲
[root@server6 ~]# cd nginx-1.10.1
[root@server6 nginx-1.10.1]# useradd nginx 建立用户
[root@server6 nginx-1.10.1]# cd /usr/local/lnmp/nginx/sbin/
[root@server6 sbin]# ./nginx 运行nginx
[root@server6 sbin]# vim /usr/local/lnmp/nginx/conf/nginx.conf
user nginx nginx;
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 {
upstream tomcat{
server 172.25.254.3:8080;
server 172.25.254.6:8080;
}
#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 tomcat;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#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 ~ \.jsp$ {
proxy_pass http://tomcat;
}
# 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 /scripts$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.htm;
# }
#}
# 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.htm;
# }
#}
}
[root@server6 ~]# cd /usr/local/lnmp/nginx/sbin/
[root@server6 sbin]# ./nginx -t 检测语法
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful
[root@server6 sbin]# ./nginx -s reload 重载服务
在网页测试可以进行负载均衡:
但是访问tomcat的首页会没有图片,因为nginx和tomcat的默认访问不统一172.25.38.8/index.jsp:
修改配置文件:
[root@server6 conf]# vim nginx.conf
[root@server6 conf]# nginx -s reload
重新在网页测试172.25.38.8/index.jsp:
总结:
nginx-sticky-module 为 nginx 的第三方模块,使 nginx 支持 sticky 模式,所谓 sticky 模式,
就是指同一个用户的访问请求都被发送到同一个 tomcat 实例上处理。
访问 http://172.25.254.6/test.jsp,不同的主机访问时会调度到不同的 tomcat 实例上处理来自同一
主机的请求会交给同一个 tomcat 实例处理,此时你 down 掉当前正在响应的 tomcat 实例,nginx会自动
把用户的请求调度到另一个 tomcat 实例上,同时 session 也没有丢掉。
在server3和server5配置进行session共享:
[root@server5 lib]# cd /usr/local/tomcat/webapps/ROOT/
[root@server5 ROOT]# vim test.jsp
[root@server5 ROOT]# cat test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
[root@serve3 lib]# cd /usr/local/tomcat/webapps/ROOT/
[root@serve3 ROOT]# vim test.jsp
在网页测试由于负载均衡会一直切换后端:
这里使用的IP和上面的有所不同是因为换了环境,用nginx端调用即可:
[root@server6 conf]# vim nginx.conf 加入ip_hash算法
[root@server6 conf]# nginx -s reload
在网页测试:
[root@server5 ROOT]# cd /usr/local/tomcat/
[root@server5 tomcat]# ls
bin lib logs RELEASE-NOTES temp work
conf LICENSE NOTICE RUNNING.txt webapps
[root@server5 tomcat]# bin/
catalina.sh digest.sh startup.sh
configtest.sh setclasspath.sh tool-wrapper.sh
daemon.sh shutdown.sh version.sh
[root@server5 tomcat]# bin/shutdown.sh 将server5杀死之后
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
在网页测试直接切换后端数据没有实现session共享:
进行session共享:
cd /usr/local/tomcat/lib/
[root@server5 lib]# ls
annotations-api.jar ecj-4.2.1.jar servlet-api.jar tomcat-i18n-fr.jar
catalina-ant.jar el-api.jar tomcat-api.jar tomcat-i18n-ja.jar
catalina-ha.jar jasper-el.jar tomcat-coyote.jar tomcat-jdbc.jar
catalina.jar jasper.jar tomcat-dbcp.jar tomcat-util.jar
catalina-tribes.jar jsp-api.jar tomcat-i18n-es.jar
[root@server5 lib]# ls
annotations-api.jar
asm-3.2.jar
catalina-ant.jar
catalina-ha.jar
catalina.jar
catalina-tribes.jar
ecj-4.2.1.jar
el-api.jar
jasper-el.jar
jasper.jar
jsp-api.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
servlet-api.jar
spymemcached-2.7.3.jar
tomcat-api.jar
tomcat-coyote.jar
tomcat-dbcp.jar
tomcat-i18n-es.jar
tomcat-i18n-fr.jar
tomcat-i18n-ja.jar
tomcat-jdbc.jar
tomcat-util.jar
[root@server5 lib]# vim /usr/local/tomcat/conf/context.xml
[root@server5 ROOT]# cat /usr/local/tomcat/conf/context.xml | tail -n 7
<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.254.3:11211,n2:172.25.254.6:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
<Context>
[root@server5 lib]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@server5 lib]# /etc/init.d/memcached start
Starting memcached: [ OK ]
[root@server5 lib]# /etc/init.d/memcached restart
Stopping memcached: [ OK ]
Starting memcached: [ OK ]
同样在另外一台设置:
[root@serve3 lib]# ls
annotations-api.jar
asm-3.2.jar
catalina-ant.jar
catalina-ha.jar
catalina.jar
catalina-tribes.jar
ecj-4.2.1.jar
el-api.jar
jasper-el.jar
jasper.jar
jsp-api.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
servlet-api.jar
spymemcached-2.7.3.jar
tomcat-api.jar
tomcat-coyote.jar
tomcat-dbcp.jar
tomcat-i18n-es.jar
tomcat-i18n-fr.jar
tomcat-i18n-ja.jar
tomcat-jdbc.jar
tomcat-util.jar
[root@serve3 lib]# vim /usr/local/tomcat/conf/context.xml
[root@serve3 lib]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@serve3 lib]# /etc/init.d/memcached start
Starting memcached: [ OK ]
[root@serve3 lib]# /etc/init.d/memcached restart
在网页测试提交:
[root@server5 ~]# /usr/local/tomcat/bin/shutdown.sh 将server5的tomcat关闭
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
在网页再次测试提交:
浏览器刷新可以访问到 ,保证了数据不会丢失实现了session共享:
[root@server5 lib]# /etc/init.d/memcached stop 关闭memcached
Stopping memcached: [ OK ]
在网页测试数据依旧没有影响:
linux下的虚拟主机设置:
[root@server6 ROOT]# vim /usr/local/lnmp/nginx/conf/nginx.conf 更改配置文件加入虚拟主机
server {
listen 80;
server_name www.westos.org;
location / {
root /www1;
index index.html;
}
}
server {
listen 80;
server_name www.linux.org;
location / {
root /www2;
index index.html;
}
}
[root@server6 ROOT]# nginx -s reload 重新加载
[root@server6 ROOT]# cd /usr/local/lnmp/nginx/conf/
[root@server6 conf]# mkdir /www1
[root@server6 conf]# mkdir /www2
[root@server6 conf]# cd /www1/
[root@server6 www1]# vim index.html 编写默认访问文件
[root@server6 www1]# cat index.html
www.westos.org
[root@server6 www1]# cd /www2/
[root@server6 www2]# ls
[root@server6 www2]# vim index.html
[root@server6 www2]# cat index.html
www.linux.org
在真机添加解析:
[root@foundation38 Desktop]# vim /etc/hosts 添加解析
[root@foundation38 Desktop]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.38.100 www.westos.org bbs.westos.org
172.25.38.6 www.westos.org bbs.westos.org
172.25.38.2 server1
172.25.38.3 server2
172.25.38.7 www.westos.org www.linux.org
在网页访问:
https的加密访问:
[root@server6 www2]# vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
listen 443 ssl;
server_name www.westos.org;
ssl_certificate cert.pem;
ssl_certificate_key cert.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /www1;
index index.html index.htm;
}
}
[root@server6 www2]# nginx -s reload 重载nginx服务,因为没有证书加密
nginx: [emerg] BIO_new_file("/usr/local/lnmp/nginx/conf/cert.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/lnmp/nginx/conf/cert.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
[root@server6 www2]# cd /etc/pki/
[root@server6 pki]# ls
CA ca-trust entitlement java nssdb product rpm-gpg rsyslog tls
[root@server6 pki]# cd tls/
[root@server6 tls]# ls
cert.pem certs misc openssl.cnf private
[root@server6 tls]# cd cert
-bash: cd: cert: No such file or directory
[root@server6 tls]# cd certs/
[root@server6 certs]# ls
ca-bundle.crt ca-bundle.trust.crt make-dummy-cert Makefile renew-dummy-cert
[root@server6 certs]# make cert.pem
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \
cat $PEM1 > cert.pem ; \
echo "" >> cert.pem ; \
cat $PEM2 >> cert.pem ; \
rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
..+++
...+++
writing new private key to '/tmp/openssl.a4cevI'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn 输入证书信息
State or Province Name (full name) []:shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:root@localhost
[root@server6 certs]# ll cert.pem
-rw------- 1 root root 3092 Aug 7 16:14 cert.pem
[root@server6 certs]# cp cert.pem /usr/local/lnmp/nginx/conf/
[root@server6 certs]# nginx -s reload
在网页访问:
点击Advance即可:
点击Add Exception:
点击Get certificate获取证书:
点击锁可以显示证书信息:
查看淘宝的重定向:
[root@foundation38 Desktop]# curl -I taobao.com
HTTP/1.1 302 Found
Server: Tengine
Date: Tue, 07 Aug 2018 08:54:02 GMT
Content-Type: text/html
Content-Length: 258
Connection: keep-alive
Location: http://www.taobao.com/
[root@foundation38 Desktop]# curl -I www.taobao.com
HTTP/1.1 302 Found
Server: Tengine
Date: Tue, 07 Aug 2018 08:54:08 GMT
Content-Type: text/html
Content-Length: 258
Connection: keep-alive
Location: https://www.taobao.com/
Set-Cookie: thw=cn; Path=/; Domain=.taobao.com; Expires=Wed, 07-Aug-19 08:54:08 GMT;
Strict-Transport-Security: max-age=31536000
nginx的重定向1:
[root@server6 certs]# vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
listen 80;
server_name www.linux.org westos.org; 多加进去一个域名
location / {
root /www2;
index index.html;
}
[root@server6 certs]# nginx -s reload
在真机测试域名可以用:
[root@foundation38 Desktop]# curl -I westos.org
HTTP/1.1 301 Moved Permanently
Server: wts/1.2
Date: Tue, 07 Aug 2018 08:59:55 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: http://www.westos.org/
加入重定向到https加密:
[root@server6 certs]# vim /usr/local/lnmp/nginx/conf/nginx.conf
[root@server6 certs]# nginx -s reload
server {
listen 80;
server_name www.linux.org westos.org;
rewrite ^(.*)$ https://www.westos.org permanent;
#location / {
# root /www2;
# index index.html;
#}
}
[root@foundation38 Desktop]# curl -I westos.org
HTTP/1.1 301 Moved Permanently
Server: wts/1.2
Date: Tue, 07 Aug 2018 09:05:41 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: http://www.westos.org/
[root@foundation38 Desktop]# curl -I westos.org/index.html 在真机测试可以直接重定向到加密
HTTP/1.1 301 Moved Permanently
Server: wts/1.2
Date: Tue, 07 Aug 2018 09:05:55 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: http://www.westos.org/index.html
当后面有域名时候会重定向:
[root@server6 www2]# vim /usr/local/lnmp/nginx/conf/nginx.conf
server {
listen 80;
server_name www.westos.org westos.org;
#rewrite ^(.*)$ https://www.westos.org permanent;
rewrite ^/bbs$ http://bbs.westos.org permanent;
location / {
root /www1;
index index.html;
}
}
server {
listen 80;
server_name bbs.westos.org;
location / {
root /www2;
index index.html;
}
}
[root@server6 www2]# nginx -s reload
[root@foundation38 Desktop]# curl -I www.westos.org/bbs
HTTP/1.1 301 Moved Permanently
Server: nginx/
Date: Tue, 07 Aug 2018 09:26:08 GMT
Content-Type: text/html
Content-Length: 179
Connection: keep-alive
Location: http://bbs.westos.org
当有域名的时候也会重定向:
[root@server6 www2]# vim /usr/local/lnmp/nginx/conf/nginx.conf
[root@server6 www2]# nginx -s reload
server {
listen 80;
server_name www.westos.org westos.org;
#rewrite ^(.*)$ https://www.westos.org permanent;
rewrite ^/bbs$ http://bbs.westos.org permanent;
rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent;
location / {
root /www1;
index index.html;
}
}
server {
listen 80;
server_name bbs.westos.org;
location / {
root /www2;
index index.html;
}
}
[root@foundation38 Desktop]# curl -I www.westos.org/bbs/index.html
HTTP/1.1 301 Moved Permanently
Server: nginx/
Date: Tue, 07 Aug 2018 09:32:22 GMT
Content-Type: text/html
Content-Length: 179
Connection: keep-alive
Location: http://bbs.westos.org/index.html
用if重定向:
[root@server6 www2]# cd /www1/
[root@server6 www1]# mkdir bbs
[root@server6 www1]# cd bbs/
[root@server6 bbs]# ls
[root@server6 bbs]# vim index.html
[root@server6 bbs]# cat index.html
www.westos.org - bbs
[root@server6 bbs]# vim /usr/local/lnmp/nginx/conf/nginx.conf
[root@server6 bbs]# nginx -s reload
[root@foundation38 Desktop]# curl -I bbs.westos.org
HTTP/1.1 301 Moved Permanently
Server: nginx/
Date: Tue, 07 Aug 2018 09:49:45 GMT
Content-Type: text/html
Content-Length: 179
Connection: keep-alive
Location: http://www.westos.org/bbs/