CentOS 7.6一键安装 nginx及生产跨域配置
1.运行一键安装命令
yum install -y make cmake gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel && wget http://nginx.org/download/nginx-1.12.2.tar.gz && tar zxvf nginx-1.12.2.tar.gz && cd nginx-1.12.2 && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module && make && make install && ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
2.默认安装路径
/usr/local/nginx/sbin/nginx
3.启动
#启动
#1.直接启动
#进入nginx目录,执行启动命令
cd /usr/local/nginx/sbin
./nginx
# 或者直接
/usr/local/nginx/sbin/nginx
#2.指定配置文件方式启动
#进入nginx目录,执行启动命令
cd /usr/local/nginx/sbin
./nginx -c /usr/local/nginx/conf/nginx.conf
#或者
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
4.检查nginx配置文件
#进入nginx目录
cd /usr/local/nginx/sbin
#检查配置文件是否有语法操作
./nginx -t
# 或者显示指定配置文件
./nginx -t -c /usr/local/nginx/conf/nginx.conf
5.平滑的重启,修改配置后,重新加载配置
#进入nginx目录
cd /usr/local/nginx/sbin
#执行重载命令
./nginx -s reload
6.关闭nginx
#进入nginx目录
cd /usr/local/nginx/sbin
# 快速停止nginx
./nginx -s stop
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
./nginx -s quit
7.reopen重新打开日志文件
#进入nginx目录
cd /usr/local/nginx/sbin
# 重新打开日志文件
./nginx -s reopen
8.其他命令重启、关闭nginx
# 查看进程号,下图 master的为主进程号
ps -ef | grep nginx
#从容停止Nginx
kill -QUIT 主进程号
#快速停止Nginx
kill -TERM 主进程号
#强制停止Nginx
pkill -9 nginx
#平滑重启nginx:
kill -HUP 主进程号
8. Nginx动静分离(静态资源和动态资源来自于不同的服务器)
后端服务器集群是动态数据的来源,nginx作为http服务器代理用来管理后端所需文件和静态资源,在nginx服务器中,准备好访问的静态资源可以通过域名url地址访问。
添加server案例(以Linux系统为例)
server{
listen 80;
server_name www.image.com;#这里填写域名即可绑定域名
location /{
root /home/static; #关键字root配置项为静态资源的根目录
index default.html #没有找到指定静态资源时默认访问的静态资源
}
}
具体流转过程如下:请求地址http://www.image.com/xyy.png匹配server中的location后将静态资源名称tp.png衔接在root配置项后,拼接成资源在Nginx服务器上的绝对地址/home/static/tp.png根据地址拿到静态资源返回到浏览器页面给用户展示。
root配置项:可以是文件夹绝对路径,如Linux (root /home/static)、Windows(root C:/static)。也可以是文件夹相对路径root static(表示在nginx安装的根目录有一个文件夹叫做static)。
index配置项:表示当访问请求匹配到location中的root后,在没有找到指定静态资源时默认访问的静态资源地址。index也可以配置多个静态资源,例如:index default1.html default2.html。如果静态资源/home/static/default1.html不存在则接着验证/home/static/default2.html是否存在,存在则用/default2.html在该server中发起内部重定向去重新匹配location)
9.生产跨域配置
proxy_pass
既是把请求代理到其他主机,其中 http://www.b.com/ 写法和 http://www.b.com写法的区别如下:
不带/
location /html/
{
proxy_pass http: //b.com:8300;
}
带/
location /html/
{
proxy_pass http: //b.com:8300/;
}
上面两种配置,区别只在于proxy_pass转发的路径后是否带 “/”。
针对情况1,如果访问url = http://server/html/test.jsp,则被nginx代理后,请求路径会便问http://proxy_pass/html/test.jsp,将test/ 作为根路径,请求test/路径下的资源。
针对情况2,如果访问url = http://server/html/test.jsp,则被nginx代理后,请求路径会变为 http://proxy_pass/test.jsp,直接访问server的根资源。
修改配置后重启nginx代理就成功了。
额外问题vue-cli 路由使用mode:"history"模式出错,请问是什么原因?
问题:nginx部署后使用项目history后对页面进行刷新后会显示nginx404页面
解决:nginx 配置下添加以下代码
location / {
try_files $uri $uri/ /index.html;
}
参考链接:参考链接