首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Nignx安装

Nignx安装

作者头像
用户11690639
发布2026-06-17 21:39:14
发布2026-06-17 21:39:14
2220
举报

1下载nginx

http://nginx.org/en/download.html 下载了linux下的安装版本

在这里插入图片描述
在这里插入图片描述

2解压

tar -xvf nginx-1.16.0.tar.gz

在这里插入图片描述
在这里插入图片描述

3安装依赖

代码语言:javascript
复制
# 编译器环境GCC
yum install gcc
# 支持正则表达式(如 location 路由匹配)。
yum install pcre-devel
#支持 HTTP 响应的 GZIP 压缩功能
yum install zlib zlib-devel
#支持 HTTPS(SSL/TLS 加密)、HTTP/2 等安全协议。
yum install openssl openssl-devel
3.1安装GCC

因为nginx是C写的,所以要安装C语言的编译环境 yum install gcc

在这里插入图片描述
在这里插入图片描述

3.2安装nginx

nginx的安装路径下执行:./configure

代码语言:javascript
复制
注:有些Linux环境对开发同学是不给root用户的,所以没有权限操作nignx,这时需要指定nginx安装路径,请参考如下内容:
cd nginx
./configure --prefix=/data/yourspace   #/data/yourspace你要安装的路径
make 
make install
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

报错了,发现缺少PCRE,所以需要安装依赖 https://ftp.pcre.org/pub/pcre/ 。下载后解压 tar -xvf pcre-8.00.tar.gz 或者直接 yum -y install pcre-devel openssl openssl-devel后,再次安装./configure,以下代表安装成功了

在这里插入图片描述
在这里插入图片描述

3.3 执行make install

3.4 启动

/usr/local/nginx/sbin/nginx

3.5 检查

在这里插入图片描述
在这里插入图片描述

3.6 配置环境变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.7 启动和停止nginx

启动命令 :nginx 停止:nginx -s stop

在这里插入图片描述
在这里插入图片描述

4 非root用户如何授权

如果后面是需要非root用户运维Nginx,还需要此步操作。需要给非root用户授权

4.1授权给非root用户

代码语言:javascript
复制
# chown -R 非root用户:非root用户组  /usr/local/nginx/

chown -R  appuser : appuser  /usr/local/nginx/

4.2 没有权限访问80端口

如果是非root用户启用会报下面错误,这是因为Linux系统下的非root用户没有足够权限监听80端口,只有root用户才能监听1024以下端口。如果不是非用80不可,可以将nginx配置文件中的监听端口改为大于1024以上的其它端口。

在这里插入图片描述
在这里插入图片描述

如果一定要用可试试以下方法: 在Linux中,非root用户配置Nginx监听80端口的方法如下:

方法一:使用 setcap 赋予端口绑定能力

赋予Nginx绑定低端口的能力 执行以下命令,允许Nginx二进制文件绑定低端口(需root权限):

代码语言:javascript
复制
sudo setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx
  • 路径确认:确保路径 /usr/sbin/nginx 与实际Nginx安装路径一致。
  • 持久性:每次更新Nginx后需重新执行此命令。

配置Nginx以非root用户运行nginx.conf 中设置用户:

代码语言:javascript
复制
user www-data;  # 替换为你的非root用户

调整文件权限 确保Nginx相关文件(如日志、证书)对该用户可访问:

代码语言:javascript
复制
sudo chown -R www-data:www-data /var/log/nginx/
sudo chmod -R 755 /etc/letsencrypt/live/  # 若使用SSL证书

启动Nginx 直接以非root用户运行:

代码语言:javascript
复制
nginx

方法二:使用 authbind 授权端口访问

安装authbind Debian/Ubuntu:

代码语言:javascript
复制
sudo apt install authbind

配置端口权限

代码语言:javascript
复制
sudo touch /etc/authbind/byport/80
sudo chown your_user:your_user /etc/authbind/byport/80
sudo chmod 755 /etc/authbind/byport/80

通过authbind启动Nginx

代码语言:javascript
复制
authbind --deep nginx -c /path/to/nginx.conf
  • 自启动脚本:修改启动脚本,在Nginx命令前添加 authbind --deep

方法三:通过端口转发(iptables)

设置iptables规则 将80端口流量转发到高端口(如8080):

代码语言:javascript
复制
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

持久化规则 Debian/Ubuntu:

代码语言:javascript
复制
sudo apt install iptables-persistent
sudo netfilter-persistent save

配置Nginx监听高端口nginx.conf 中修改监听端口:

代码语言:javascript
复制
listen 8080;

方法四:反向代理模式

部署轻量级代理 用root运行前端代理(如Nginx或HAProxy)监听80端口,转发到后端Nginx(如8080端口)。

前端代理配置示例(Nginx)

代码语言:javascript
复制
server {
    listen 80;
    location / {
        proxy_pass http://localhost:8080;
    }
}

方法五:Systemd套接字激活(高级)

创建Systemd Socket文件 /etc/systemd/system/nginx.socket

代码语言:javascript
复制
[Socket]
ListenStream=80
Accept=yes

创建Service文件 /etc/systemd/system/nginx@.service

代码语言:javascript
复制
[Service]
User=www-data
ExecStart=/usr/sbin/nginx

启用并启动服务

代码语言:javascript
复制
sudo systemctl enable nginx.socket
sudo systemctl start nginx.socket

注意事项
  • 安全风险:直接绑定低端口需谨慎,确保Nginx配置安全。
  • 日志权限:非root用户需有权限写入日志目录。
  • SSL证书:确保证书文件对运行用户可读(如将用户加入 ssl-cert 组)。

根据环境和权限选择合适的方法,推荐优先使用 setcapauthbind

5 nginx域名映射到相应的端口上

代码语言:javascript
复制
大致步骤为:
1.找到nginx的安路径下的配制文件:cd /usr/local/nginx/conf/
2.先备份好原有的nginx.conf,然后对其进行修改,可以直接在原文件中改,也可以引入外部文件进行修改。本例中将通过include引入外部文件进行修改
3.修改本机的hosts,路径为:/etc/hosts ,加上ip 域名映射
4.重新起动nginx服务即可,具体操作如下所示:
  • 进入路径并创建一个vhost目 录:cd /usr/local/nginx/conf && mkidr vhost
  • 创建一个配制文件,名称可以自己起,本例的配制文件名为域: cmss.tset.ce.inc.conf
代码语言:javascript
复制
server {
        # 监听 80 端口
    listen 80;
    autoindex on;
    server_name cmss.test.ce.inc;
    access_log /usr/local/nginx/logs/access.log combined;
    index index.html index.htm index.jsp index.php;
    if ( $query_string ~* ".*[\;'\<\>].*" ){
        return 404;
    }
    location / {
        # 反向代理到 8080 端口
        proxy_pass http://192.168.1.90:9080;
        add_header Access-Control-Allow-Origin *;
    }
}
  • 在nginx的配制文件中引入新创建的文件内容,注意引入的位置在http里。与server同级 *
在这里插入图片描述
在这里插入图片描述
  • 修改本地的hosts文件 :vi /etc/hosts
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
192.168.1.90 cmss.test.ce.inc
  • 重启nginx 或重新加载
代码语言:javascript
复制
nginx -s reload

好了,大功告成,可以通过域名访问 了~~~

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1下载nginx
  • 2解压
  • 3安装依赖
    • 3.1安装GCC
    • 3.2安装nginx
    • 3.3 执行make install
    • 3.4 启动
    • 3.5 检查
    • 3.6 配置环境变量
    • 3.7 启动和停止nginx
  • 4 非root用户如何授权
    • 4.1授权给非root用户
    • 4.2 没有权限访问80端口
      • 方法一:使用 setcap 赋予端口绑定能力
      • 方法二:使用 authbind 授权端口访问
      • 方法三:通过端口转发(iptables)
      • 方法四:反向代理模式
      • 方法五:Systemd套接字激活(高级)
      • 注意事项
  • 5 nginx域名映射到相应的端口上
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档