1# 安装wget 2yum install -y weget 3# 安装编译工具和相关的库文件 4yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 5# 下载PCRE(让nginx支持RUL地址的重定向功能) 6wget https://sourceforge.net/projects/pcre/files/pcre/8.41/pcre-8.41.tar.gz 7# 解压 8tar -xvzf pcre-8.41.tar.gz 9# 进入安装包目录 10cd pcre-8.41 11# 编译安装 12./configure 13make && make install 14# 下载安装 nginx 15wget http://nginx.org/download/nginx-1.14.0.tar.gz 16# 解压 17tar -xvzf nginx-1.14.0.tar.gz 18# 进入安装包目录: 19cd nginx-1.14.0 20# 编译安装: 21./configure --prefix=/usr/local/share/applications/nginx-1.14.0/ --with-http_ssl_module 22make && make install 23# 查找nginx安装路径 24find / -name nginx 25# 制作nginx软链接,格式为:ln -s 目标路径 /usr/sbin/nginx 26# 找到带sbin的nginx路径,如:/usr/local/share/applications/nginx-1.14.0/sbin/nginx 27ln -s /usr/local/share/applications/nginx-1.14.0/sbin/nginx /usr/sbin/nginx
root权限下添加nginx的yum源,此处以RHEL/CentOS为例,其他版本的linux参考这里
1# 安装yum-utils 2yum install yum-utils -y 3# 添加nginx.repo 4vi /etc/yum.repos.d/nginx.repo
内容如下:
1[nginx-stable] 2name=nginx stable repo 3baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 4gpgcheck=1 5enabled=1 6gpgkey=https://nginx.org/keys/nginx_signing.key 7module_hotfixes=true 8 9[nginx-mainline] 10name=nginx mainline repo 11baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ 12gpgcheck=1 13enabled=0 14gpgkey=https://nginx.org/keys/nginx_signing.key 15module_hotfixes=true
yum -y install nginx
1nginx 2# 如果没任何提示,则代表nginx启动成功了,查看nginx端口占用 3lsof -i:80 4# nginx 1410 root 6u IPv4 22898 0t0 TCP *:http (LISTEN) 5# nginx 2206 nginx 6u IPv4 22898 0t0 TCP *:http (LISTEN) 6# 开放80端口 7firewall-cmd --permanent --zone=public --add-port=80/tcp 8# 重载防火墙 9firewall-cmd --reload
1# 查找配置文件路径 2find / -name nginx.conf 3# 得到路径如:/etc/nginx/nginx.conf,接下来编辑 4vi /etc/nginx/nginx.conf
找到server部分
1server { 2 listen 80; #监听的端口 3 server_name jszoo.com www.jszoo.com; # 需要绑定的域名 4 location / { 5 root /www/xxx; # 项目路径 6 index index.html index.htm; # 默认首页 7 } 8 # 反向代理 9 location /api/ { # 将所有带api的请求代理到127.0.0.1:3000 10 proxy_pass http://127.0.0.1:3000/; # host:port的格式 11 proxy_set_header X-Real-IP $remote_addr; # 代理以后获取真实访问源ip 12 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 在多层代理时会包含真实客户端及中间每个代理服务器的IP 13 proxy_set_header Host $http_host; # 客户端真实的域名和端口号 14 proxy_set_header X-Forwarded-Proto $scheme; # 客户端真实的协议 15 proxy_set_header X-NginX-Proxy true; 16 17 } 18} 19server { 20 listen 443 ssl; 21 server_name ~^(www\.)?(?<domain>[^\.]+\.[^\.]+)$; // 匹配所有域名 22 ssl_certificate /etc/letsencrypt/live/$ssl_server_name/fullchain.pem; // 根据请求域名匹配对应证书 23 ssl_certificate_key /etc/letsencrypt/live/$ssl_server_name/privkey.pem; 24 25 location / { 26 proxy_pass http://localhost:3000; 27 proxy_set_header Host $host; 28 proxy_set_header X-Real-IP $remote_addr; 29 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 30 proxy_set_header X-Forwarded-Proto $scheme; 31 } 32}
配置完毕以后esc然后:wq回车,检测是否又错,没错就reload一下conf
1# 检测配置文件 2nginx -t 3# 重载 4nginx -s reload
1# 启动nginx 2nginx 3 4# 检测配置文件 5nginx -t 6 7# 重新载入配置文件 8nginx -s reload 9 10# 重启 nginx 11nginx -s reopen 12 13# 停止 nginx 14nginx -s stop 15 16# 添加开机启动 17systemctl enable nginx.service 18 19# 查看nginx错误日志(最近100条) 20tail -100f /var/log/nginx/error.log 21 22# 查看nginx请求日志(最近100条) 23tail -100f /var/log/nginx/access.log
1# 屏蔽单个ip访问,格式: deny ip; 2deny 1.2.3.4; 3# 允许单个ip访问,格式: allow ip; 4allow 1.2.3.4; 5# 屏蔽所有ip访问 6deny all; 7# 允许所有ip访问 8allow all; 9# 屏蔽ip段访问,格式: deny ip/mask 10# 屏蔽192.168.1.0到192.168.1.255访问的命令 11deny 192.168.1.0/255; 12# 允许ip段访问,格式:allow ip/mask 13# 允许192.168.1.0到192.168.1.255访问的命令 14allow 192.168.1.0/255;
include blockip.conf;
1# 允许部分ip访问 2allow 123.45.25.6; 3allow 123.68.52.125; 4allow 123.125.25.106; 5# 禁止其余ip访问 6deny all;
放置位置 | 效果 |
---|---|
http | nginx中所有服务起效 |
server | 指定的服务起效 |
location | 满足的location下起效 |
limit_except | 指定的http方法谓词起效 |
这个错误一般就是上传接口的文件大小超过限制了 解决: 在nginx.conf的server内添加一行: client_max_body_size 2m; ps:2m根据实际需要调整
*5 connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream, client: 192.168.0.1, server: xxx.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "xxx.com"
临时禁用SELinux,测试是否成功,如果成功,则重新启用SELinux(sudo setenforce 1),然后修改SELinux策略
1 2sudo setenforce 0