Is NAS / SAN + HTTP server a good solution for serving large number of static files over the internet?
Add some memory caching on your server, and you should be good. Apache has a couple of modules that do that.
You could also take a look at static distributed caching services, if you want to improve latency for your users and reduce your bw costs, like Akamai and PantherExpress. The latter can be a good investment, depending on your bw costs.
This really depends on the overall problem you are solving. SANs are incredibly complicated and are just a problem waiting to happen. The complexity of the solution adds huge numbers of failure points, maintenance difficulty, possibly nonstandard drivers on every system, interoperability problems between versions of every component.
Most NAS solutions are overengineered problems waiting to happen. They only add value when you need to share one data set in real-time between clients. Think about whether your problem really calls for this. Netapp is really the only NAS vendor that I consider acceptably reliable.
If you can avoid a SAN or NAS, avoid it. Internal hard drives are usually cheaper and faster. They also have less performance confusion when there is an issue. Maintenance is easier. Scalability is easier (i.e. you add performance as you add capacity, if you are replicating the data across every server).
Think about how easy it is to get a large amount of fast storage in a server. A HP DL380 G5 can comfortably have over 1.5TB in one 2U server. Expect the storage to be faster than most SAN or NAS solutions. You won't have controller redundancy, but if you have redundant servers anyway, you increase the overall reliability of the solution vs having one copy of the data with redundant paths to it.
If you need to instantly change the data across multiple servers, I would still consider whether a NAS is the correct solution. Depending on your definition of instantly, and whether you can point requests for updated files to the servers with the current data during synchronization.
I can only imagine a SAN being the correct solution when the data set is huge and there is no time to create a software solution. My experience is that the vast majority of SANs are set up more based on political requirements than technical ones.
I can only imagine a NAS being the correct solution when the NAS server is a Netapp, the data set is very large, and the solution needs to be deployed too quickly to allow for a software solution to spreading the data across multiple servers internal storage. A good NAS server is very expensive, certainly more expensive than paying for development of a software solution to avoid one. But it can possibly be deployed more quickly.
If there are political considerations, SANs and NASes can help to push blame for problems/failures to other groups or to vendors. This is usually the most important consideration when I see a SAN or NAS solution chosen.