安装nginx
yum install -y nginx
设置开机启动
systemctl enable nginx
启动nginx
systemctl start nginx
如果启动报错:
nginx: [emerg] getpwnam("nginx") failed in /etc/nginx/nginx.conf:5
说明没有nginx 用户
#创建用户 -s /sbin/nologin 参数的含义是为nginx指定默认的shell,像常用的bash、csh、ash等等。nginx用户是为了让nginx服务以低权限执行,并不真正使用这个账号登录,所以将它设定为不可登录。/sbin/nologin就是专门执行这个任务的特殊的shell。
useradd -s /sbin/nologin -M nginx
#查看是否创建成功
id nginx
如果还报错:
#说明 同名用户组存在
useradd: group nginx exists - if you want to add this user to that group, use -g.
#解决方式 把nginx加入nginx组里:
useradd -g nginx nginx -s /sbin/nologin
#如果报错 说明passwd没有修改权限
useradd: cannot open /etc/passwd
#查看权限 有i 则无法修改
[root@0002 etc]# lsattr /etc/passwd
----ia-------e-- /etc/passwd
#去掉i,a权限如下方式 如遇到类似方式 都执行次操作
[root@0002 etc]# chattr -i /etc/passwd
nginx自身命令
#启动
/usr/sbin/nginx
#重载配置文件
/usr/sbin/nginx -s reload
#指定配置文件启动
/usr/sbin/nginx -c /etc/nginx/nginx.conf
#检测配置文件 正在运行的nginx执行 会找到使用的配置文件 如果文件删除 会报错 可用于查找运行时nginx问题
/usr/sbin/nginx -t
#或者检测指定配置文件
/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
# 快速停止nginx
/usr/sbin/nginx -s stop
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
/usr/sbin/nginx -s quit
配置跨域并监听80端口
普通配置 vim /etc/nginx/nginx.conf
#配置虚拟主机的相关参数 一个http中可以有多个server
server {
# 监听端口
listen 80;
# 监听ipv6端口
listen [::]:80;
# 监听地址 ip地址或域名
server_name 192.168.10.66;
root /home/www/vote;
# Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#请求的url过滤,正则匹配
location / {
#根目录
#root /home/www/vote;
#设置默认首页
#index index.html;
#转发请求
proxy_pass http://192.168.10.66:8989;
#访问日志
access_log /var/log/nginx/access.log;
#错误日志
error_log /var/log/nginx/error.log;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
配置跨域
location / {
proxy_redirect off;
proxy_pass http://domain;
# 把客户端的 host ip 写入转发请求头里 转发给代理服务器
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Cookie $http_cookie;
#允许客户端携带验证信息,例如 cookie 之类的
add_header 'Access-Control-Allow-Credentials' 'true';
# 表示服务器可以接受的请求源(Origin) * 代表全部 也可以配置成多个域的map $http_origin 是nginx取请求中header的origin的值
add_header Access-Control-Allow-Origin $http_origin;
# 允许使用指定的方法请求该地址
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
# 代表允许在请求该地址的时候带上指定的请求头
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,token,Keep-Alive,Access-Control-Request-Headers,Access-Control-Request-Method,User-Agent,Referer,X-Requested-With,Origin,Referer,If-Modified-Since,Cache-Control,Content-Type,content-type,Authorization';
# OPTIONS 代表预检 浏览器先发送个OPTIONS方法得空数据 检测可否跨域
if ($request_method = 'OPTIONS') {
# 用来指定本次预检请求的有效期,单位为秒
add_header 'Access-Control-Max-Age' 86400;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header Access-Control-Allow-Origin $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,token,Keep-Alive,Access-Control-Request-Headers,Access-Control-Request-Method,User-Agent,Referer,X-Requested-With,Origin,Referer,If-Modified-Since,Cache-Control,Content-Type,content-type,Authorization';
add_header 'Content-Length' 0;
return 204;
}
}
源码安装方式:
#下载源码
https://nginx.org/
#解压
tar -zxvf nginx-1.18.0.tar.gz
#进目录
cd nginx-1.18.0
#生成配置 默认安装目录 /usr/local/nginx
./configure
#或者修改安装目录
./configure --prefix=/home/program/nginx
#编译安装
make
make install
配置过滤目录
location /dir-web/ {
root /home/dir-web;
index index.html index.htm;
#把pmcm-web过滤掉
#例如:https://10.0.0.1:9005/dir-web/index.html 转成: https://10.0.0.1:9005/index.html
location ~ ^/dir-web(?<dir_path>.+) {
try_files /$dir_path /$dir_path/ /$dir_path/index.html;
}
}
修改403,404访问页面
error_page 403 /403.html;
error_page 404 /404.html;
# /home/nginx/html/ 目录下放对应403.html 404.html文件
location = /403.html {
root /home/nginx/html/;
}
location = /404.html {
root /home/nginx/html/;
}