JesseZhao1990 / blog

learing summary
MIT License
62 stars 7 forks source link

centOS安装Nginx #11

Open JesseZhao1990 opened 6 years ago

JesseZhao1990 commented 6 years ago

通过yum安装

本文只介绍通过yum安装,其他安装方式的安装目录可能会不同

1. 基础环境的安装

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2.安装Nginx

* 填写如下内容:

[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1

wq! 保存,则会产生一个/etc/yum.repos.d/nginx.repo文件。

* 下面直接执行如下指令即可自动安装好Nginx:

yum install nginx -y


### 3.安装目录
Nginx安装完成了,但是安装到哪里去了?

config: /etc/nginx/nginx.conf 安装目录

config: /etc/sysconfig/nginx

pidfile: /var/run/nginx.pid

log: /var/log/nginx 日志文件


### 4.相关命令

service nginx start 启动命令
service nginx stop 停止命令
service nginx restart 重启命令
service nginx reload 重新加载nginx.conf配置文件 (修改完配置文件之后,需要重新加载)

pkill -9 nginx 强制停止Nginx nginx 启动nginx


## 常见错误的解决办法

### 1.装好之后访问出现403 forbidden
此错误说明nginx没权限读取文件,可能的情况如下
* 启动用户和nginx工作用户不一致
解决办法是用启动用户和nginx的工作用户都设置为root,怎么设置nginx的工作用户呢。找到nginx的配置文件。在首行添加一行

user root;


* 缺少index.html等文件。就是配置文件中index index.html index.htm这行中的指定的文件
server {  
  listen       80;  
  server_name  localhost;  
  index  index.html index index.htm index.jsp;  
  root  /root/xiangmu/dist/;
}
如果在 /root/xiangmu/dist/下找不到执行的index,会报403 forbidden

*  权限问题,如果nginx没有web目录的操作权限,也会出现403错误
解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

chmod -R 777 /root/xiangmu/ chmod -R 777 /root/xiangmu/dist/

* SELinux设置为开启状态(enabled)的原因。

查看当前selinux的状态

/usr/sbin/sestatus

将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

vi /etc/selinux/config

SELINUX=enforcing

SELINUX=disabled


重启生效。reboot。

reboot



## 请求转发
http://blog.csdn.net/tobacco5648/article/details/51099426

参考文档:
 1. https://www.zhihu.com/question/20559538
2.http://blog.csdn.net/onlysunnyboy/article/details/75270533
3.http://www.nginx.cn/591.html
4.https://www.cnblogs.com/odbo/p/5295690.html
5.https://www.cnblogs.com/angellating/p/6479876.html
6.http://tengine.taobao.org/book/
JesseZhao1990 commented 6 years ago

使用HTML5 History模式,Nginx的相应配置

vue中默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。也可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。但是这种需要后端的支持。下面以前端vue,后端Nginx的例子来演示一下如何配置

前端配置

export default new Router({
  mode: 'history',
  routes: []
})

后端Nginx

location / {
  try_files $uri $uri/ /index.html;
}

关于try_files配置的解释

try_files 见名知意,try(尝试)files(文件),尝试去加载文件,当一个请求($uri)过来的时候,首先匹配本身($uri),找不到的话再去匹配($uri/), 都找不到匹配方案,那就会去找项目根目录下的 index.html(/index.html)