nginx 为啥80端口不能用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 为啥80端口不能用相关的知识,希望对你有一定的参考价值。

参考技术A 那是被占用了。
把80释放出来即可:
进入主表表中
找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP下的Start修改其值为0,重启电脑即可

为啥 mysql CLI 可以连接,而 WordPress 却不能?

【中文标题】为啥 mysql CLI 可以连接,而 WordPress 却不能?【英文标题】:Why can mysql CLI connect, but not WordPress?为什么 mysql CLI 可以连接,而 WordPress 却不能? 【发布时间】:2017-11-24 22:35:26 【问题描述】:

我有一个全新的 Wordpress (php-fpm/nginx) 服务器。在 CentOS 上运行。我还有一个 docker 容器,由 vanilla mysql-server 映像构建。

MySQL 配置

它运行在3306端口上,所有MySQL用户都在MySQL中注册,主机为172.17.0.1(例如root@172.17.0.1),这是docker的网关IP。 docker 容器是使用 ansible playbook 安装的。所有配置设置都是参数化的,并且这些参数在适当的地方使用,包括 WordPress 配置文件和在 MySQL docker 安装期间填写 root 密码等内容的环境变量。这里是我配置相关数据库的地方:

WordPress 配置:

这分为两部分,我将包括其中相关的部分。在我的 ansible playbook 中,这段代码设置了 WordPress 表和用户(成功):

- name:             Create WordPress database
  mysql_db:
    name:           ' wp_db_name '
    state:          present
    login_user:     root
    login_password: ' mysql_root_password '
    login_host:     ' docker_mysql_ip '

- name:             Create WordPress database user
  mysql_user:
    name:           ' wp_db_user '
    password:       ' wp_db_password '
    priv:           ' wp_db_name .*:ALL'
    state:          present
    login_user:     root
    host:           ' docker_gateway_ip '
    login_password: ' mysql_root_password '
    login_host:     ' docker_mysql_ip '

相关的 wp-config.php:

define('DB_NAME', 'wordpress');
define('DB_USER', ' wp_db_user ');
define('DB_PASSWORD', ' wp_db_password ');
define('DB_HOST', ' docker_mysql_ip ');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

当我导航到 wp-admin 时,具体问题是“Warning: mysql_connect(): Permission denied in /srv/wordpress/wp-includes/wp-db.php on line 1473”,标题为“建立数据库连接时出错”,状态码 500。

令人困惑的部分

当我检查 wp-config.php 文件时,用户名、密码和数据库名称都与它们应有的完全一样。当我将主机、用户和密码从wp-config.php 复制/粘贴到命令行上的相应位置(例如mysql -u wordpress -p -h 172.17.0.2)时,我可以连接并查看 Wordpress 数据库。

总结一下

使用命令行时 MySQL 可以正常连接,但 Wordpress 不能。我对 Wordpress 或 PHP 也不是很熟悉,因此对于与问题相关的日志可以位于何处的任何想法将不胜感激。

【问题讨论】:

这不应该指向本地主机:define('DB_HOST', '127.0.0.1: mysql_port '); 对不起。我在 3 个会话中写了这个,忘记更新我对 wp-config.php 的更改。已编辑。 CentOS 主机是否运行 SELinux?默认情况下,可能不允许与 MySQL 建立 TCP 连接。检查getenforce 另见***.com/questions/8139451/… 【参考方案1】:

我刚刚在使用 MariaDB 的 Debian 9.1 上遇到了这个问题,但这在 Oracle MySQL 中应该是一样的。我可以从命令行轻松登录,但 PHP 无法访问数据库。

我花了几分钟才弄明白,但我记得当我以前在旧服务器上使用 Arch Linux 时(顺便说一句,这是一个愚蠢的想法),需要命令 mysql_secure_installation 来让它接受连接.

试试看,这对我有用。

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

【讨论】:

以上是关于nginx 为啥80端口不能用的主要内容,如果未能解决你的问题,请参考以下文章

为啥ubuntu 只有80和8000端口对外

nginx 监听80 为啥php-fpm监听9000

为啥tomcat换成80端口就不能访问了?而其他端口可以

nginx 80端口代理无效 非80可用

为啥在端口 80 上运行 node.js 可能不安全?

nginx占用了80端口,iis想同时使用80端口,怎么配置