安装
Ubuntu
apt-get install nginx
启动
service nginx start|stop|reload|restart
目的
当一台服务器部署多个应用时,当我们访问应用时,需要在浏览器中输入服务器IP+端口号,这并不方便,且语义性极差,想要通过三级域名来访问。
基础
Location指令格式
location [ = | ~ | ~* | ^~ ] uri {...}
=
:用于标准uri前,要求请求字符串与uri严格匹配,一旦匹配成功则停止~
:用于正则uri前,并且区分大小写~*
:用于正则uri前,但不区分大小写^~
:用于标准uri前,要求Nginx找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配
环境
1台服务服务器 假如IP:192.168.1.10
一个ngnix 使用默认端口为80
Tomcat1 端口为18501 申请域名为: 域名1 对应服务器ip 192.168.1.10
Tomcat2 端口为18502 申请域名为: 域名2 对应服务器ip 192.168.1.10
Tomcat3 端口为18503 申请域名为: 域名3 对应服务器ip 192.168.1.10
nginx配置
配置文件
目录
/etc/ngrok/nginx.conf
在文件中可见,文件include
了大部分
2.新建文件 proxy.conf ,进行如下配置
### Tomcat1 ###
server {
listen 80;
server_name 域名1【二级/三级】;
# 这个东西是配置静态页面的
index index.jsp index.html index.html index.shtml;
# '/' 代表请求根目录的都走此规则
location / {
proxy_pass http://[主机公网IP]:18501;
#Proxy Settings;
#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;
}
}
### Tomcat2 ###
server {
listen 80;
server_name 域名2;
index index.jsp index.html index.html index.shtml;
location / {
proxy_pass http://[主机公网IP]:18502;
#Proxy Settings;
#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;
}
}
注意:如果在域名中配置了新的子域名,需要将其加入到DNS解析中去。
在某些应用中,超链接的形式是通过模板写入的,所以跳转后仍有端口
备案
在境内建站必然需要备案,并在页面底部挂备案信息。
证书安装
在阿里云申请免费的SSL证书
略
安装
在虚拟主机的config处添加如下指令
server {
# https监听443端口
listen 443 ssl;
server_name 【证书绑定的域名】;
ssl_certificate 【证书路径(cert/domain name.pem)】;
ssl_certificate_key 【证书密钥(cert/domain name.key)】;
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;
}
注意:某些应用在修改后仍使用Http协议请求数据,此时会发生404等错误。
rewrite
使用正则匹配,如果需要将80端口的数据转发到443,需要在80端口进行监听,然后直接转发到443端口。在老版本的Nginx中,需要写rewrite进行转发。在当前版本推荐的做法是
server {
listen 80;
server_name blog.vicat.top;
return 301 https://blog.vicat.top$request_uri;
}