我刚刚将我的开发环境从一台旧机器移到一台新的MAC上。我喜欢在我的一般本地环境(更简单的项目)中使用MAMP,但出于某种原因,最新版本的MAMP希望我在本地主机上使用8888端口。
我把它改回了端口80,这是我旧机器上MAMP上的端口,我有一些绝对的开发链接,所以我不想麻烦把localhost:8888放在Uri:s的开头,而只把localhost放在开头
结果是无法访问任何资源,所有内容都被禁止。将端口更改回8888,即可正常工作。
为什么我会有这种行为?
一个月前,其他人似乎也遇到过同样的问题(无法连接到MAc上MAMP中的80端口),但没有解决方案。
------------------更新
LSOF-I tcp: 80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Google 973 mattias 28u IPv6 0x269b774a91275221 0t0 TCP localhost:54383->localhost:http (CLOSE_WAIT)
Google 973 mattias 36u IPv6 0x269b774a91275881 0t0 TCP localhost:54384->localhost:http (CLOSE_WAIT)
httpd 5444 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5445 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5446 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5447 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5448 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5449 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5461 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5468 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5476 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5477 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
httpd 5478 mattias 4u IPv6 0x269b774a912738a1 0t0 TCP *:http (LISTEN)
而且http://localhost/MAMP/ 很好
当我试图访问任何我自己的文件夹在webroot我被禁止:
如果我尝试一级文件夹(即http://localhost/myapp/,位于webroot/myapp)我只得到
禁止您没有访问此资源的权限。
但是如果我尝试子文件夹或PHP文件,如http://localhost/myapp/subfolder/或http://localhost/myapp/subfolder/index.php
然后我得到了
禁止您没有访问此资源的权限。服务器无法读取htaccess文件,拒绝访问以确保安全
如果我将MAMP配置为使用不同的端口,则一切正常。但是我不想在dev env中的路由中指定端口,因为我正在使用的应用程序有一些硬编码的Uri:s。
而且,这是一种让我恼火的奇怪行为=)我的另一台MAC电脑没有这样做,所以我想弄清真相。。。
-------另一个更新
我已经将我的网络根目录(我相信MAMP默认称之为htdocs)移动到我的用户文件夹(user/Home/Documents/www),如果它以某种方式与权限相关,但我不明白为什么它可以在端口8888下工作,但不能在80下工作就像Apache根据运行的端口访问我的文件夹一样...
------- 要求的信息
我偶尔启动一个节点服务器只是为了检查一个人的工作,但目前还没有运行。当它打开时,它在3000端口下运行。
.htaccess of my web/文件夹:RewriteCond%{HTTP_HOST}^域名上的RewriteEngine。com$[NC,或]RewriteCond%{HTTP_HOST}^www.domain-name。com$RewriteCond%{REQUEST_URI}!文件夹/重写规则(.*)/文件夹/$1[L]
Mac版本Big Sur 11.3。1.
MAMP版本6.3
我能想到的原因可能有很多。我还想为每个问题提出一个解决方案。
首先,Mac(Darwin)基于Linux。这意味着1024范围内的端口具有特权。在环3(userland)中运行的任何应用程序都无法访问端口。
您需要使用sudo
权限运行应用程序。这当然会带来安全风险,只有在适当考虑之后才应该这样做。通常,您不应该使用sudo
运行Webserver(以及像MAMP这样的开发环境)。关于解决方案,请参阅我的最后一点,它通常被用作许多生产环境中的最佳实践。
其次,很有可能您试图以root用户身份运行它,但仍然无法访问端口。这可能是因为端口已被另一个应用程序占用。
要检查这一点,您可以发出lsof-i tcp: 80
,我可以看到您无论如何都这样做了。杀死为您阻塞此端口的其他应用程序。有时退出应用程序是不够的,你可能必须使用sudo kill-9 pid。更多信息请见此手册页。
第三,Mac特有的问题可能是(我想你就是这样,因为你在访问webroot和子文件夹时看到了不同的错误),要么是网守阻止MAMP访问目录,要么是chmod
权限不正确(因为我看到了.htaccess投诉)。
系统首选项-
最后,如果没有其他办法,您可以在其他端口上运行MAMP,然后使用
iptables
重定向来自端口80的所有本地流量。如果Web服务器没有隐藏在负载平衡器或反向代理之后,那么在生产环境中,Web服务器实际上也是这样配置的。有关说明,请参阅AskUbunu帖子。
我已经将我的webroot(我相信MAMP默认称之为htdocs)移动到我的用户文件夹(user/Home/Documents/www)中,如果它与权限有关,但我不明白为什么它在8888端口下工作正常,但在80端口下却不工作。。。这不像Apache根据它运行的端口访问我的文件夹。。。
这就是问题所在。我不知道为什么不同端口的行为不同,但是将wwwroot设置为MAMP/htdocs并将我的应用程序移动到那里解决了这个问题。
我不会将此标记为答案,以防有人可以解释为什么MAMP在我的主文件夹中获得wwwroot的权限,只要它在端口8080或其他位置上运行,而在端口80上没有权限,这将是这个问题的最佳答案。。。
这是因为有其他应用程序使用端口80。我想到的是skype。您可以尝试lsof-i tcp:80来查看哪些进程正在锁定端口80。
问题内容: 我同时使用默认的MAMP端口(分别为8888和8889)运行apache和mySQL,并且一切正常,但是当我将端口分别切换为Apache的80和mySQL的3306时,mySQL服务器无法重新启动。 我正在尝试将MAMP设置为在这些端口上运行,因为显然,这对于在Dreamweaver中进行开发是最佳的…因此,鉴于我想为Dreamweaver提供理想的开发环境,是否有办法使用3306端口
我在运行elasticsearch的服务器上通过80代理了端口9200。我有一个骆驼路由,需要将文档索引到此服务器。 camel elasticsearch插件是否支持该功能?ie通过非9300端口访问弹性搜索? 我知道端口9300使用本机elasticsearch传输协议。 我的选择是什么?我可以通过apache代理9300吗?我不确定这是否有效。 还是camel elasticsearch插件
问题内容: 我在运行RHEL7的Amazo EC2实例上运行elasticsearch 1.4和kibana4。 Kibana4作为独立进程运行,未部署在诸如nginx之类的Web容器中,它正在侦听端口5601(默认端口)。我想让kibana在80端口监听。 是否可以不使用nginx来实现?如果是,怎么办? 问题答案: 编辑文件{kibana-directory} /config/kibana.y
我在启动服务时遇到端口冲突,而配置服务已经在运行。我目前用的是Spring Boot 1.2.3.RELEASE和Spring Cloud版本1.0.0.RELEASE(试过用1.0.1.RELEASE,同样问题)。 如果我在端口8888中启动配置服务器,然后尝试启动另一个服务,它会尝试在端口8888中启动,即使我已经指定了另一个端口。奇怪的是,这不会发生在Mac OS中,它确实会发生在Windo
本文向大家介绍Mac中使用Nginx实现80端口转发8080端口,包括了Mac中使用Nginx实现80端口转发8080端口的使用技巧和注意事项,需要的朋友参考一下 由于项目本身的原因,开发必须使用80端口实现,而在Unix内核中非Root用户无法直接使用1024以下的端口,最初作者找到了pfctl的方式实现80端口转发到8080端口实现访问,经过亲测出现了最为严重的问题,按照当时的方法配置好之后发
并打开端口localhost:80,看到docker入门页面。但是,我必须运行我的客户机的项目,它的端口也映射到localhost:80。因此,我无法在localhost:80上运行我客户的项目。除此之外,任何我随机打开docker然后切换到localhost:80的实例,它都会重定向到docker的入门教程。我想重置这个localhost:80端口,这样当我运行客户端的项目时,我可以将它们映射到