希望有一天我能看到 NGINX 成功屏幕

希望有一天我能看到 NGINX 成功屏幕

我是 Linux 的菜鸟,但对 PHP、MySQL、OOP、Java、Eclipse 等有丰富的经验。我以前曾多次尝试涉足 Linux 领域,但每次遇到困难都会打退堂鼓。现在看来这种情况又发生了。如能得到任何帮助,我将不胜感激。

我预订了一个小型 Centos 6.9 VPS 并尝试安装 NGINX,这个简单的事情花了我两天时间,打开了几十个浏览器搜索选项卡,仍然没有在浏览器中看到“NGINX 正在工作”屏幕。我尝试了几个不同的教程,但看起来最完整的是:

[https://www.atlantic.net/community/howto/configure-nginx-on-a-centos-6-server/][1]

我按照建议运行了更新。我安装了 MariaDB 而不是 MySQL。我正在使用 puTTY 和 SSH Explorer。

nginx -t 报告成功。

$ nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

我可以 ping 服务器 IP。

如果我尝试重新启动 NGINX,我会收到一个我无法理解的权限错误,因为我是以 root 用户身份执行所有操作的:

$ service nginx restart

nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)

nginx: configuration file /etc/nginx/nginx.conf test failed [root@centos6:/etc/nginx/conf.d ] 

这是一个致命的错误吗?

下一个问题:如果我一步一步地执行此操作,并且仅尝试通过 IP 访问服务器,请问有人能用最简单的术语告诉我如何更改默认配置文件吗?我尝试了一些教程,但遗憾的是仍然没有成功。有些教程没有对配置文件进行任何更改,应该可以正常工作,但实际上却不行。有些教程主要使用域名进行配置更改,我没有域名(这将是下一步),但仍然不起作用。我可以运行其他命令来了解发生了什么吗?

添加所需信息谢谢先生:

我的目标是尝试让 WP Multisite 正常工作,但我认为我只期望看到成功屏幕是合理的。不,抱歉,我使用了 Yum 安装,但开箱即用。我只是想知道它怎么能知道我的 IP 地址?配置不需要这个吗?抱歉,我问了这么多菜鸟问题。

nginx.conf 的内容与安装时相同:

        # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /var/run/nginx.pid;

    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;

    events {
        worker_connections  1024;
    }


    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;

        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;

        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    }

Contents of error log as requested:

    2017/04/25 13:35:17 [emerg] 2563#0: bind() to 0.0.0.0:8000 failed (13: Permission denied)
    2017/04/25 13:41:40 [emerg] 2606#0: bind() to 0.0.0.0:8000 failed (13: Permission denied)
    2017/04/25 15:13:41 [emerg] 14498#0: open() "/var/run/nginx.pid" failed (13: Permission denied)
    2017/04/25 15:14:41 [emerg] 14513#0: open() "/var/run/nginx.pid" failed (13: Permission denied)
    2017/04/25 16:41:46 [emerg] 14591#0: open() "/var/run/nginx.pid" failed (13: Permission denied)

Additional info.

Contents of /etc/nginx/conf.d/default.conf (unchanged from installer)

#
# The default server
#

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

答案1

安装nginx非常简单:

  1. 使用包管理器安装 nginx
  2. 在防火墙中打开正确的端口

对于 1,只需执行以下操作:yum install nginx。对于 2,您可以执行以下操作:

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo /etc/init.d/iptables save

默认情况下,nginx 会响应来自任何主机名或 IP 的任何请求。

答案2

好了,伙计们,我终于让它工作了!多亏了上面的调试帮助,很明显问题不是出在 NGINX 而是 IPTABLES。但作为一个新手,我不知道哪里出了问题,我只知道它没有工作。

问题原因:显然,CENTOS 6 默认 IPTABLES 配置文件末尾包含一条阻止所有流量的规则。在此之后添加另一条规则以打开端口 80 毫无作用。这解释了为什么它不起作用。

解决方案:这篇文章解释了整个事情:

http://www.binarytides.com/open-http-port-iptables-centos/

从该文章中粘贴,以防它消失:

默认 IPTABLES 配置:

[root@dhcppc2 ~]# iptables --line -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      273 22516 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5      271 36456 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 172 packets, 24494 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
[root@dhcppc2 ~]#

在第 5 行正确插入新的 80 端口规则的命令:

# iptables -I INPUT 5 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

生成的配置文件:

[root@dhcppc2 ~]# iptables --line -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      291 23868 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    60 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW,ESTABLISHED 
6      286 38524 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 4 packets, 608 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
[root@dhcppc2 ~]#

再次感谢所有提供帮助的人。

相关内容